为什么检查索引不起作用

时间:2015-03-09 08:44:55

标签: jquery

我的名字是

755_KK_0_KK_0tab1_checkbox  
755_ZZ_0_ZZ_0tab1_checkbox  
755_KK_0_KK_0tab2_checkbox  
755_ZZ_0_ZZ_0tab2_checkbox

我正在检查字符串中是否包含 tab1 ,或者不是这样

var vendoritemsdata = [
  {"name": "755_KK_0_KK_0tab1_checkbox"}, 
  {"name": "755_ZZ_0_ZZ_0tab1_checkbox"},
  {"name": "755_KK_0_KK_0tab2_checkbox"},
  {"name": "755_ZZ_0_ZZ_0tab2_checkbox"}
]

var value = 1;
var temp_arry = [];

for (var i = 0; i < vendoritemsdata.length; i++) {
    var itemname = vendoritemsdata.indexOf("tab" + value);
    if (itemname === -1) {
        var namesss = vendoritemsdata[i].name;
        temp_arry.push(namesss);

    }
}
alert(temp_arry);

但是,尽管检查了 tab1 tab2 ---

为什么它将所有元素推向数组?

http://jsfiddle.net/ya665q7y/

4 个答案:

答案 0 :(得分:1)

您需要根据当前项目的名称(在迭代中)进行测试,以便

for (var i = 0; i < vendoritemsdata.length; i++) {
    var itemname = vendoritemsdata[i].name.indexOf("tab" + value);
    if (itemname === -1) {
        var namesss = vendoritemsdata[i].name;
        temp_arry.push(namesss);

    }
}

演示:Fiddle

答案 1 :(得分:0)

您需要使用像

这样的元素名称
var itemname = vendoritemsdata[i].name.indexOf("tab" + value);

代码,

for (var i = 0; i < vendoritemsdata.length; i++) {
    var itemname = vendoritemsdata[i].name.indexOf("tab" + value);
    // here you need name for ----^---^--- each element and check indexOf
    if (itemname === -1) {
        var namesss = vendoritemsdata[i].name;
        temp_arry.push(namesss);
    }
}

&#13;
&#13;
var vendoritemsdata = [{
    "name": "755_KK_0_KK_0tab1_checkbox"

}, {
    "name": "755_ZZ_0_ZZ_0tab1_checkbox"

}, {
    "name": "755_KK_0_KK_0tab2_checkbox"

}, {
    "name": "755_ZZ_0_ZZ_0tab2_checkbox"

}]

var value = 1;
var temp_arry = [];

for (var i = 0; i < vendoritemsdata.length; i++) {
    var itemname = vendoritemsdata[i].name.indexOf("tab" + value);
    if (itemname === -1) {
        var namesss = vendoritemsdata[i].name;
        temp_arry.push(namesss);
    }
}

alert(temp_arry);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你没有检查名字试试这个:

var itemname = vendoritemsdata[i].name.indexOf("tab"+value);
像这样:

for(var i=0;i<vendoritemsdata.length;i++) {
  var itemname = vendoritemsdata[i].name.indexOf("tab"+value);
  if(itemname === -1) {
    var namesss = vendoritemsdata[i].name;
    temp_arry.push(namesss);
  }
}

FIDDLE

答案 3 :(得分:0)

由于您在问题上添加了jQuery标记,因此您也可以考虑以下解决方案:

filteredArray = jQuery.grep(inputArray, function (element) {
    return a.indexOf(searchTerm) > -1 //this assumes elements are strings (not objects)
});

您的代码示例:http://jsfiddle.net/hzndmyzj/