看看这些数组比较代码的例子:
// example-1
let array1 = ['a', 'b'];
let array2 = ['a', 'b'];
console.log(array1.equals(array2)); // returns true
// example-2
let array1 = ['a', 'b', 1];
let array2 = ['a', 'b', 1];
console.log(array1.equals(array2)); // returns true
// example-3
let array1 = ['a', 'b', {'a': 1, 'b': 2}];
let array2 = ['a', 'b', {'b': 2, 'a', 1}];
console.log(array1.equals(array2)); // returns false
我正在寻找一种方法来比较其中包含对象的数组,但不考虑嵌套对象中元素的顺序,如上面的示例 3 中所述。
最佳答案
你应该JSON.stringify()
数组并像这样比较它们:
var arr1 = ['a', 'b', {'a': 1}];
var arr2 = ['a', 'b', {'a': 1}];
console.log(JSON.stringify(array1) == JSON.stringify(array2));
之所以有效,是因为它将对象数组转换为更简单的比较状态(JSON 字符串)。仅当数组以与 OP 示例中相同的顺序包含它们的属性时,这才有效。
关于javascript - 比较两个包含对象的数组,包括其他对象、数组等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53863806/