【发布时间】:2020-08-08 01:40:20
【问题描述】:
我试图在 map 函数中返回一个值,然后在函数末尾达到默认返回值。
我注意到 map 函数没有返回 validateSequence 函数的值,但是一个简单的 for 循环可以。
function validateSequence(sequence) {
const modifers = ['-', 'm', 'b', 'i'];
sequence.map((seq) => {
if(!modifers.includes(seq)) {
return false; // want to return false
};
});
return true;
};
validateSequence(['Z','e','p']); // returns true
function validateSequence(sequence) {
const modifers = ['-', 'm', 'b', 'i'];
for(let i=0; i<sequence.length; i++) {
if(!modifers.includes(sequence[i])) {
return false;
};
};
return true;
};
validateSequence(['Z','e','p']); // returns false
我希望 map 函数在达到默认返回值 true 之前返回 false。我知道map函数是在达到默认返回值true之前执行的,那为什么不返回false呢?
【问题讨论】:
-
map 函数正在返回一些东西,但你没有对它做任何事情。
-
map 遍历数组中的每个项目,并从回调构建一个新的返回值数组(在您的情况下,为 false 和 undefined。除非回调抛出错误,否则它不会提前停止。它不是适合这项工作的工具;只需使用 for 循环即可。