Zop*_*opy 4 javascript function
我对 JavaScript 真的很陌生,遇到了一个我不明白的问题。
我想编写一个函数,它将一个数组作为参数,如果数组中的所有元素都相同,则返回 true。
现在我知道一个简单的 for 循环更有效,但我想用forEach()来做这个简单的函数。
function isUniform(array) {
let uniChecker = array[0];
array.forEach(function(element) {
if (uniChecker !== element) {
return false;
}
});
return true;
}
Run Code Online (Sandbox Code Playgroud)
它总是返回真,即使它应该返回假。
不幸的是,从forEach回调返回对外部作用域没有任何作用,它只是退出了回调作用域。虽然forEach 可以使用它并不是最有效的,因为没有真正的方法可以提前退出循环。
更好的选择是every / some,这些函数旨在测试数组中的项目并检测异常(由您提供的任何条件确定)并在第一个不匹配时退出,例如
const isUniform = arr => arr.every(x => arr[0] === x)
Run Code Online (Sandbox Code Playgroud)
操场
const isUniform = arr => arr.every(x => arr[0] === x)
Run Code Online (Sandbox Code Playgroud)
forEach() 会丢弃返回值并始终返回 undefined
所以无论你在代码中做什么,forEach 的返回值都不会返回
您可以创建一个标志,当满足您的条件时设置为 false(如果您想使用 ForEach,这是一个建议)
function isUniform(array) {
let flag=true;
let uniChecker = array[0];
array.forEach(function(element) {
if (uniChecker !== element) {
flag=false;
}
});
return flag;
}
Run Code Online (Sandbox Code Playgroud)