检查一个数组元素是否包含字符串

Check if ONE array element contains a string

本文关键字:数组元素 是否 包含 字符串 一个 检查      更新时间:2023-09-26

是否可以在数组的每个元素中搜索字符串?

所以如果我有

var arr =["select 1", "select 2", "unselect 1"];

我想看看哪些数组元素有"1"在他们,然后删除那些不。这是我的代码,但它不工作。

var RowNum = ( $('table.input-table > tbody > tr').length);
var type = [];
for(var i=0; i<=(RowNum - 1); i++){
    type.push( $("table.input-table > tbody > tr").eq(i).html());
};
alert(type.length);
for(var i = (type.length - 1); i >= 0 ; i--){
    var SpliceVal = 0;
    for(var ii = 0; ii <= (Req.length -1); ii++){
        if(type[i].indexof(Req[ii]) == -1){
            SpliceVal += 1;    
        };  
    };
    if(SpliceVal == Req.length){
        type.splice(i, 1);
    };
};
alert(type.length);

第一个警报(type.length);返回一个7。要求的事情。长度= 3

第二个警报(type.length);应该返回一个3

代码将部分运行,直到我到达:

if(type[i].indexof(Req[ii]) == -1)

我得到一个错误说TypeError: type[I]。indexof不是函数

感谢您的帮助

我会使用filter;

var containsOne = function(el) {
   return el.indexOf('1') !== -1;
}
var filtered = ['select', 'select', 'select1'].filter( containsOne );
//returns 'select1'
http://jsfiddle.net/8vmjb1Lt/

如果您决定使用splice而不是其他方法:

var arr =["select 1", "select 2", "unselect 1", "uneselect 2", "select 1"];
for (var i = 0; i < arr.length; i++) {
    if (arr[i].indexOf("1") > -1) {
        arr.splice(i, 1);
        if (i !== 0) {i--;}
    }
}

JSFIddle更新。

这将修改原来的数组

这就是你需要的东西。使用jquery grep()函数,可以得到满足条件的元素列表,如下所示:

// Original array
var arr =["select 1", "select 2", "unselect 1"];
// Here, after executing this function your original array will have only
// elements having 1 in them
arr = jQuery.grep(arr, function(value) {
           if(value.indexOf("1") > 0){
              return true;
           }else{
              return false;
           }
      });