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。在此先感谢您的帮助,我一直在尝试自己整理逻辑,感觉自己碰壁了!
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)