我与我的一个办公室挑战中的一个代码。
const arr = [5,10,15,'C','D', '+'];
array
方法来实现此目标。但是对我而言,根本不是该值。
正确的方法是什么?这是我的尝试:
reduce
const arr = [5,10,15,'C','D', '+'];
const result = arr.reduce((c,v,i,a) => {
if(v=='C'){
a.splice(i-1, i-1);
}
if(v=='D'){
console.log(i) //console not works
}
return c + (Number(v) ? v:0);
}, 0);
console.log(result);
const arr = [5, 10, 15, 'C', 'D', '+'];
const result = arr.reduce((acc, curr) => {
if (curr === 'C') {
acc.pop(); // remove the previous value from the array
} else if (curr === 'D') {
acc= acc.map(x=>x*2); // double the value of the ALL elements
} else if (curr === '+') {
const sum = acc.reduce((sum, val) => sum + val, 0); // sum all
return [sum]; // return the sum as a single element array
} else {
acc.push(curr); // add the current element to the accumulator
}
return acc;
}, []);
console.log(result);
时,您将阵列拼接出来,然后const arr = [5, 10, 15, 'C', 'D', '+'];
const functions = {
'C': arr => arr.slice(0, arr.length - 1),
'D': arr => arr.map(e => e * 2),
'+': arr => [arr.reduce((acc, cur) => acc + cur)]
}
const result = arr.reduce((acc, cur) => {
if (functions[cur]) {
return functions[cur](acc);
} else {
return [...acc, cur];
}
}, []);
console.log(result);
v == "C"
"C"
被跳过并
"D"
。