我有一个要比较的数组,以查看数组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))