不知道主人是想做 shadow equal 还是 deep equal,感觉是两种都想实现,但都实现得不太好。想法如下,如果有错误的还请指出,一起进步哈🙃
首先,如果是第一行代码:
if (arr1 === arr2) return true;
这行代码貌似是想来个 shadow equal,就是只比较两数组引用相等,而不是两个数组的每个值相等。
然后呢,后面的几行代码又有点想做deep equal的味道,就是比较两个数组每个值都相等,那么他们相等。
所以建议写两个equal 函数:
// arrayShadowEqual.js
function arrayShadowEqual(arr1, arr2) {
if (arr1 === arr2) return true;
return false;
}
// arrayDeepEqual.js
function arrayDeepEqual(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) {
return false;
}
return true;
}
再提一个小建议哈, JavaScript中不等应该要坚持使用 !==。
(完)
不知道主人是想做
shadow equal还是deep equal,感觉是两种都想实现,但都实现得不太好。想法如下,如果有错误的还请指出,一起进步哈🙃首先,如果是第一行代码:
这行代码貌似是想来个
shadow equal,就是只比较两数组引用相等,而不是两个数组的每个值相等。然后呢,后面的几行代码又有点想做
deep equal的味道,就是比较两个数组每个值都相等,那么他们相等。所以建议写两个
equal函数:再提一个小建议哈,
JavaScript中不等应该要坚持使用!==。(完)