Che*_*tan 13 javascript arrays comparison compare
我有两个JavaScript数组(A和B)包含我创建的对象.我想检查数组A中的所有对象是否包含在数组中B,但不一定按相同的顺序.
做这个的最好方式是什么?
编辑:
它们都是实际的对象,而不是原始对象,所以我还需要比较它们的内容和结构(可能使用类似的东西JSON.stringify).
我想这样做是因为我正在学习测试驱动开发,我想测试返回对象列表的函数.我需要测试返回的列表是否包含预期的对象(在这种情况下顺序无关紧要).
使用 ES6,您可以使用 every 和 some(以及长度)。
\n\nlet A = [1, 2, 3];\nlet B = [2, 3, 1];\n\n// all objects in A are contained in B (A \xe2\x8a\x86 B)\n// you can compare a <-> b however you'd like (here just `a === b`)\nlet AsubB = A.every(a => B.some(b => a === b));\n\n// A and B are the same length\nlet sameLength = A.length === B.length;\n\n// their contents are as equal as previously tested:\nlet equal = AsubB && sameLength;\nRun Code Online (Sandbox Code Playgroud)\n
用法: isEqArrays(arr1, arr2)
//
// Array comparsion
//
function inArray(array, el) {
for ( var i = array.length; i--; ) {
if ( array[i] === el ) return true;
}
return false;
}
function isEqArrays(arr1, arr2) {
if ( arr1.length !== arr2.length ) {
return false;
}
for ( var i = arr1.length; i--; ) {
if ( !inArray( arr2, arr1[i] ) ) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7932 次 |
| 最近记录: |