比较两个长度相同但在JS中对象ID不同的数组

问题描述 投票:1回答:2

我想比较内部具有不同整数id的两个对象数组,如下所示。

    arrayOne = [{id: 45}, {id: 35}, {id: 43}]; 
    arrayTwo = [{id: 42}, {id: 35}, {id: 43}];  // should return false on it because 42 is not in first array.

我想实现一个函数,如果这两个数组与上面的示例不同,则应返回false,但如果这两个数组与下面的示例相同,则应返回true

    arrayOne = [{id: 45}, {id: 35}, {id: 43}]; 
    arrayTwo = [{id: 45}, {id: 35}, {id: 43}]; // should return true on it because both are identical.

    arrayOne = [{id: 35}, {id: 43}, {id: 45}]; 
    arrayTwo = [{id: 45}, {id: 35}, {id: 43}]; // should return true on it because all id's are inside.

实现这一目标的任何好的方法?

javascript arrays loops underscore.js lodash
2个回答
0
投票

您可以使用every,并在其中使用some检查其他数组中是否至少存在一项:

arrayOne = [{id: 45}, {id: 35}, {id: 43}]; 
arrayTwo = [{id: 42}, {id: 35}, {id: 43}];

result1 = arrayOne.every(k=>arrayTwo.some(d=>d.id==k.id));

console.log(result1);

//Second case

arrayOne = [{id: 45}, {id: 35}, {id: 43}]; 
arrayTwo = [{id: 45}, {id: 35}, {id: 43}];

result2 = arrayOne.every(k=>arrayTwo.some(d=>d.id==k.id));

console.log(result2);

0
投票

您可以比较字符串化数组:

var arrayOne = [{id: 45}, {id: 35}, {id: 43}]; 
var arrayTwo = [{id: 42}, {id: 35}, {id: 43}];
var isSame = JSON.stringify(arrayOne) == JSON.stringify(arrayTwo)?
              true : false;
console.log(isSame);
© www.soinside.com 2019 - 2024. All rights reserved.