web*_*oob 3 javascript arrays map-function
假设你有一个像这样的数组:
arrayExample = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
我想使用 map 函数迭代 arrayExample ,如果所有数字都小于 8,则返回true,否则返回false 。但是,当我这样做时,我得到了一组 true(例如:[true,true,true... 等])
我只能返回 1 个值吗?
到目前为止,这是我的代码:
arrayExample = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
我对“map”有点陌生,但我相信它会这样做,因为它为每个元素返回一个值,只是对如何使其返回 1 true或false感到困惑。
最简单的解决方案是使用.some().
我们不需要检查每个值。我们需要找到第一个不小于8的值。
const array = [1, 2, 3, 4, 5, 6, 7]
const testBoolean = !array.some(m => m >= 8)
console.log(testBoolean)Run Code Online (Sandbox Code Playgroud)
对于这样的事情来说,这.map()不是正确的工具。.map()用于将数组中的所有元素转换为新元素(即:将每个元素映射到新的转换值)。因此,.map()将始终返回一个数组(除非故意修改此行为)。相反,您可以使用.every()它,它会告诉您数组中的所有元素是否都符合您的条件(即:如果您的函数对每个元素都返回 true,那么您将得到 true 作为结果,否则您将得到 false) 。一旦找到回调函数返回的一个元素,该方法就会提前终止,这.every()false有助于提高效率:
const array = [1, 2, 3, 4, 5, 6, 7];
const testBoolean = array.every(m => {
if (m >= 8) {
return false;
}
return true;
});
console.log(testBoolean);Run Code Online (Sandbox Code Playgroud)
m < 8这可以写得更简洁,只需返回(这将评估为true或false)的结果
const array = [1,2,3,4,5,6,7];
const testBoolean = array.every(m => m < 8);
console.log(testBoolean);Run Code Online (Sandbox Code Playgroud)