0

由于任何编码的背景较少,我正在尝试从具有 javascript 中 indexof 条件的现有数组中获得过滤后的数组。

我的代码:

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

上面的代码不起作用

添加信息:

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

上面的代码也不起作用..


不要怀疑数据数组和表单输入,因为我用代码检查了每个元素,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");

我得到了匹配和不匹配的。添加注意:数据数组有部分名称,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 回答