以下代码有效。但这是在函数式编程风格的方法中修改数组值的正确方法。
a = [1, 2, 3];
a.every(function(val,index, arr) {
if (val === 2) {
arr[index] += 1;
}
});
答案 0 :(得分:1)
没有。虽然您的代码有效,但从概念上讲,您应该使用forEach
方法,请参阅here。
(另外,为了便于阅读,请删除 arr
参数并使用this
。)
答案 1 :(得分:0)
但这是在函数式编程风格的方法中修改数组值的正确方法。
没有。使用函数式编程范例,您不应修改任何对象(无论您使用何种方法)。更好:
var a = [1, 2, 3];
var b = a.map(function(val) {
return (val === 2) ? 3 : val;
});
请注意,像你一样使用every
毫无意义 - 你对测试所有元素的谓词不感兴趣。当你真的想要从你的回调中执行副作用时,你应该使用forEach
(这不是很有用,但至少可以明确你的意图)。