简短查询是在下面的代码中为什么不打印找到了?
var products = [];
products.push("ABC", "XYZ");
var compareProducts = ["ABC","XYZ"];
console.log(products)
if($.inArray(products, compareProducts) > -1)
{
alert("found");
}
else{
alert("not found");
}
答案 0 :(得分:3)
根据文件,
$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1。如果数组中的第一个元素与value匹配,则$ .inArray()返回0.
这正是它的工作原理:
inArray: function( elem, arr, i ) {
return arr == null ? -1 : indexOf.call( arr, elem, i );
}
它会在elem
中找到arr
的出现位置。它没有发现另一个数组中数组的obejcts的出现。
如果您想检查products
中是否存在compareProducts
中的所有项目,您可以迭代数组或使用Array.prototype.every
:
var products = [];
products.push("ABC", "XYZ");
var compareProducts = ["ABC","XYZ"];
if (products.every(function(x) { return $.inArray(x, compareProducts) > -1; }))
{
alert("found");
} else {
alert("not found");
}
答案 1 :(得分:2)
inArray函数的参数是(String, Array)
,而不是(Array, Array)
。使用inArray
答案 2 :(得分:0)
inArray
用于查找任何single value
,not multiple values
的索引。
您正在数组中搜索不适用于inArray
的数组。