我有一个数组:var old_array = [1, 2, 3, 4, 5]
如果此数组中存在 5
,则将其删除,否则添加。
var new_array = [];
var number_existed = false;
for(var i=0,len=old_array.length;i<len;i++) {
if(old_array[i] == 5) {
new_array = old_array.slice(i+1);
number_existed = true;
break;
} else {
new_array.push( old_array[i] );
}
}
if(!number_existed) {
new_array.push(5);
}
它有效,但我需要改进。我该如何改进这段代码。我想看看 reduce
函数的运行情况,但就是想不出任何合乎逻辑的东西。
最佳答案
您可以使用 Array.includes
检查元素是否已经存在, 然后 Array.filter
它删除它,或使用 spread syntax 添加它:
function addOrRemove5(arr) {
return arr.includes(5) ? arr.filter(v => v !== 5) : [...arr, 5];
}
console.log(addOrRemove5([1, 2, 3, 4, 5]));
console.log(addOrRemove5([1, 2, 3, 4]));
关于javascript - 如何使用 reduce 函数来简化这段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247801/