如何在javascript中过滤具有条件索引的数组

时间:2013-02-21 14:28:51

标签: javascript filter indexof

具有较少的任何编码背景,我试图从javascript中具有indexof条件的现有数组中实现过滤后的数组。

我的代码:

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

上面的代码无效

addl info:

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]);

以上代码也无效..


不要怀疑数据数组和forminput因为我用代码al

检查了每个元素
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");

我得到了匹配但不匹配的。 Addl注意:数据数组有部分名称,forminput可能与数据数组中的元素不完全相同,也可能是部分的.. 我的斗争是将过滤后的数据放入新数组中。

2 个答案:

答案 0 :(得分:-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)时要注意。

答案 1 :(得分:-2)

var newArray = [];
for(var i=0;i<data.length;i++) {
    var item = data[i];
    if(item.indexOf(formInput1) > -1) {
        newArray.push(item);
    }
});

我明白了......上面那段代码对我有用...... 再次感谢..