我需要一个功能:
function isSame(a, b){
}
其中,如果a和b相同,则返回true。
,我尝试了
return a === b
,但是我发现[] === []
将返回false。我希望此功能可以提供一些结果:
isSame(3.14, 3.14); // true
isSame("hello", "hello"); // true
isSame([], []); // true
isSame([1, 2], [1, 2]); // true
isSame({ a : 1, b : 2}, {a : 1, b : 2}); //true
isSame([1, {a:1}], [1, {a:1}]); //true
最佳答案
克罗克福德(Crockford)的网站上有一些根据计划改编的示例。具体来说,请查看:
function isEqual(s1, s2) {
return isAtom(s1) && isAtom(s2) ? isEqan(s1, s2) :
isAtom(s1) || isAtom(s2) ? false :
isEqlist(s1, s2);
}
都可以在这里找到:http://javascript.crockford.com/little.js
这是一个工作示例:
http://jsfiddle.net/FhGpd/
更新:
刚写了一些基于OP的测试用例。原来我需要修改sub1函数以检查