假设我有一个带有来自数据库的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
是真的。知道如何比较这种“正确的方法”吗?
答案 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);