我有一个要比较的数组,以查看数组1中的值是否在对象内部的任何数组中:

arr1 = [9]

obj1 = {Cards: [8,5], Loans: [], Shares: [0,9,25]}


我正在使用JavaScript(ECMAScript 5)尝试执行此操作,如果在true中找到了arr1中的任何值,则只需返回obj1

我尝试过的

function arraysEqual(_arr1, _arr2) {
  if (!Array.isArray(_arr1) || !Array.isArray(_arr2) || _arr1.length !== _arr2.length)
    return false;
  var arr1 = _arr1.concat().sort();
  var arr2 = _arr2.concat().sort();
  for (var i = 0; i < arr1.length; i++) {
    if (arr1[i] !== arr2[i])
      return false;
  }
  return true;
}


但是,这只会测试看看是否特定的数组,因此我必须调用此命令三次以检查值,即使在我尝试时,它也会返回false

arraysEqual(arr1, obj1.Shares)


希望一个电话就能完成

最佳答案

您可以使用every检查arr1中的indexOf项目是否在arr2中:



function compare(arr1, arr2) {
  return arr1.every(function(n){
    return arr2.indexOf(n) > -1
  })
}

var arr = [9],
    obj = { Cards: [8,5], Loans: [], Shares: [0,9,25] }

console.log(compare(arr, obj.Shares))
console.log(compare(arr, obj.Cards))

10-06 15:23