JavaScript 函数来检查两个数组的相等性

wil*_*ris -1 javascript arrays foreach

我的任务是编写一个函数,该函数采用两个一维简单值数组(无对象等),并且仅当它们相等时才返回 true。函数也必须使用Array.forEach()方法。

到目前为止,我已经尝试过

function eql(arr1, arr2) {
  if(arr1.length !== arr2.length){return false}
  arr1.forEach((element, index) => {
    if(element !== arr2[index]){
      return false
    }
  })
  return true
}
Run Code Online (Sandbox Code Playgroud)

这让我的大部分测试都通过了,尽管仍然失败的案例是

eql([1], [2])
Run Code Online (Sandbox Code Playgroud)
eql(['a', 'b'], ['a', 'c'])
Run Code Online (Sandbox Code Playgroud)
eql([1], ['1'])
Run Code Online (Sandbox Code Playgroud)

true当我期待时,所有这三个案例都将返回false。在此先感谢您的帮助,我一直在尝试自己整理逻辑,感觉自己碰壁了!

Mah*_*Ali 6

return在里面使用forEach是没有意义的。你应该使用every()

function eql(arr1, arr2) {
  if(arr1.length !== arr2.length){return false}
  return arr1.every((e, i) => e === arr2[i]);
}
console.log(eql(['a', 'b'], ['a', 'c']))

console.log(eql([1], [2]))
Run Code Online (Sandbox Code Playgroud)

如果你真的要使用forEach()那么使用需要创建一个局部变量。

function eql(arr1, arr2) {
  if(arr1.length !== arr2.length){return false}
  let res = true;
  arr1.forEach((element, index) => {
    if(element !== arr2[index]){
      res = false
    }
  })
  return res;
}

console.log(eql(['a', 'b'], ['a', 'c']))
Run Code Online (Sandbox Code Playgroud)