jQuery .inArray()如何工作

时间:2015-12-07 06:25:18

标签: jquery

简短查询是在下面的代码中为什么不打印找到了?

var products = [];
products.push("ABC", "XYZ");
var compareProducts = ["ABC","XYZ"];

console.log(products)


  if($.inArray(products, compareProducts) > -1)
    {
    alert("found"); 
  }
  else{
    alert("not found");
  }

3 个答案:

答案 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 valuenot multiple values的索引。 您正在数组中搜索不适用于inArray的数组。