Skip to content

关于 arrayEqual 的一些意见。 #1

Description

@pftom

不知道主人是想做 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中不等应该要坚持使用 !==。
(完)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions