0

コーディングのバックグラウンドが少ないため、javascriptのindexof条件を使用して、既存の配列からフィルター処理された配列を取得しようとしています。

私のコード:

function CheckIfexists(element) {
  return (element.indexOf(formInput) > -1);
}
var filtered = data.filter(CheckIfexists);
window.alert(filtered[1] + " " + filtered[2] + " " + filtered[3]);

上記のコードが機能していません

addl情報:

forminputは、フォームフィールドから取得した入力です。

var formInput = document.getElementById("textReader").value;

私が取得したデータ配列...

var data = oRequest.responseText.split("\r\n");

私が試した別の方法は..

function CheckIfexists(formInput) {
   for (var i = 0; i < data.length; i += 1) {
       if (data[i].indexOf(formInput) > -1) {
           return false;
       }
   } 
   return true;
}

var filtered = data.filter(CheckIfexists);
window.alert(filtered[1] + " " + filtered[2] + " " + filtered[3]);

上記のコードも機能していません。


各要素をコードでチェックしたので、データ配列とフォーム入力について疑わないでください。

for(var i=0; i<data.length; i++) {  
    if (data[i] === formInput) {
        alert("You want to retrieve report?");
        didntfind = false;
        break;
    } 
}

     if (didntfind) alert("sorry. part not found");

そして、私は一致するものと一致しないものを手に入れました。追加の注意:データ配列にはパーツ名があります。forminputはデータ配列の要素と完全に同じではない場合があり、部分的である場合もあります。私の苦労は、新しい配列でフィルタリングされたものを取得することです。

4

2 に答える 2

-1

関数CheckIfexistsは、配列内のすべての要素に対して呼び出されます。理解を深めるために、次のコードを読んで実行してください。

var data = [1,2,3,4,10];
console.log(data.filter(function (item) { return item > 3; }));

私はあなたが何をしようとしているのかを見ることができます。私は、あなたはそのようなものを書く必要があると思います:

var formInput = document.getElementById("textReader").value;
var data = oRequest.responseText.split("\r\n");

function CheckIfExists(element) {
  return (element === formInput);
};

var filtered = data.filter(CheckIfexists);

また、javascript で要素の等価性 (たとえば、"1" !== 1) をチェックするときは注意してください。

于 2013-02-21T15:00:30.720 に答える
-2
var newArray = [];
for(var i=0;i<data.length;i++) {
    var item = data[i];
    if(item.indexOf(formInput1) > -1) {
        newArray.push(item);
    }
});

私はそれを手に入れました..上記のコードのようなものは私のために働いています...ありがとうございました..

于 2013-02-22T09:38:03.187 に答える