我有两个阵列说a = [1,2,3]和b=[1,2,3]
如果我这样做(a==b)会返回false.如何比较两个具有相同值的数组?
a[0]==b[0] 将返回true,但是如何在两个不同的数组中比较两个数组而不是两个相同的元素?
你有2个选择.
Fisrt one是使用自己制作的某种函数,它将迭代两个数组中的每个键并进行比较.
第二个选项是使用isEqual from _.underscore(一个非常好的JS库,http://underscorejs.org/#isEqual)这将适用于数组和对象.
我会使用第二个,因为它更容易.
var a = {'a' : '1', 'b' : '2', 'c' : '3'};
var b = {'a' : '1', 'b' : '2', 'c' : '3'};
_.isEqual(a, b) // --> true
Run Code Online (Sandbox Code Playgroud)
请注意,顺序在对象中无关紧要,因此您可以拥有
var a = {'a' : '1', 'b' : '2', 'c' : '3'};
var b = {'c' : '3', 'b' : '2', 'a' : '1'}
_.isEqual(a, b) // --> also true
Run Code Online (Sandbox Code Playgroud)
function array_compare(a, b)
{
// if lengths are different, arrays aren't equal
if(a.length != b.length)
return false;
for(i = 0; i < a.length; i++)
if(a[i] != b[i])
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
如果你知道你的阵列中有什么(不),你可以使用join:
a.join() == b.join()
Run Code Online (Sandbox Code Playgroud)
我知道,这远非防弹,但它可以在某些情况下使用(当你知道两个阵列中的顺序相同时).
如果你想比较2个数组,你可以使用JSON.stringify
JSON.stringify([1,2,3]) === JSON.stringify([1,2,3]); //=> true
Run Code Online (Sandbox Code Playgroud)
它还将比较数组中的[嵌套]对象,或数组中的[嵌套]数组:
JSON.stringify([1,2,3,{a:1,b:2}]) ===
JSON.stringify([1,2,3,{'a':1,b:2}]); //=> true
JSON.stringify([1,2,3,{a:1,b:2,c:{a:1,b:2}}]) ===
JSON.stringify([1,2,3,{'a':1,b:2,c:{a:1,b:2}}]); //=> true
JSON.stringify([1,2,3,{a:1,b:2,c:[4,5,6,[7,8,9]]}]) ===
JSON.stringify([1,2,3,{'a':1,b:2,c:[4,5,6,[7,8,9]]}]); //=> true
Run Code Online (Sandbox Code Playgroud)
在这个 jsfiddle中,我玩了一下这个想法
| 归档时间: |
|
| 查看次数: |
2907 次 |
| 最近记录: |