显式jquery indexOf()

时间:2017-11-03 21:39:42

标签: javascript

假设我有一个带有来自数据库的ID的字符串:

    string = "3, 4, 5, 8, 16, 2, 43"

和某些复选框值中的数字我映射到数组

    filter = ["35", "34"]

我想比较数组中的所有数字是否是字符串的一部分,所以我尝试了类似这样的东西(什么有效)

    if ( string.indexOf(filter) !== -1 )
    { console.log("numbers of filter are in string") }

但我的问题是因为3是34 - 所以indexOf是真的。知道如何比较这种“正确的方法”吗?

5 个答案:

答案 0 :(得分:2)

我的例子。希望它有所帮助

const str = "23, 4, 567, 7",
      firstArr = ["1", "3", "4"],
      secondArr = str.split(", ");

if(secondArr.filter(e => firstArr.indexOf(e) !== -1).length > 0) {
    console.log('str has some numbers from the firstArr');
}

答案 1 :(得分:0)

您可以轻松地在前面添加空格:

const string = " 3, 4, 5, 8, 16, 2, 43",
    filters = ["35", "34"];

if(filters.every( filter => string.includes(" "+filter))){
  alert(" all found!");
}

或者你从字符串中构建一个真正的数组:

const string = "3, 4, 5, 8, 16, 2, 43",
    filters = ["35", "34"];

const ids = string.split(", ");

if(filters.every( filter => ids.includes(filter))) 
   alert(" all found!");

答案 2 :(得分:0)

使用String.prototype.includes()

string.includes(filter)

答案 3 :(得分:0)

将字符串拆分为数组并检查其中的值



string = "3, 4, 5, 8, 16, 2, 43";
stringarray = string.split(', ');


filter = ["35", "34"];
containsall = filter.every(elem => stringarray.indexOf(elem) > -1);
alert(containsall);


filter2 = ["3", "16"];
containsall = filter2.every(elem => stringarray.indexOf(elem) > -1);
alert(containsall);




答案 4 :(得分:0)

请试试这个:



var string =  "3,4,5,8,16,2,43";
var filter = ["32", "42"];
var filter1 = ["3", "4"];

var stringArr = string.split(',');

var result = filter.every(function(val) { return stringArr.indexOf(val) >= 0; });
var result1 = filter1.every(function(val) { return stringArr.indexOf(val) >= 0; });

console.log(result);
console.log(result1);