我需要幫助,朋友們!
我們需要實作 sum 函式,它將無限數量的數字作為引數并回傳它們的總和。
不帶引數的函式呼叫應回傳 0。如果引數不是數字且不能強制轉換為數字,則應忽略它。如果可以化簡為一個數,那就拿來加起來,就像一個普通的數一樣。
用法示例:
console.log(
sum(1, 2, 3, 4, 5, 6),
); // 21
console.log(
sum(-10, 15, 100),
); // 105
console.log(
sum(),
); // 0
console.log(
sum(1, 'fqwfqwf', {}, [], 3, 4, 2, true, false),
); // 11. true = 1
我的嘗試:
const sum = (...arr) => {
return arr.reduce((a, i) => {
if (isNaN(i)) return Number(i)
return a Number(i)
}, 0)
};
我不能忽略那些無法轉換為數字的資料型別的值,如果可能的話,將這些值轉換為數字。
如果你能幫忙,我將不勝感激
uj5u.com熱心網友回復:
您可以嘗試強制型別強制(將陣列的專案轉換為數字)。如果 JS 成功強制,則添加它,否則,回退到 0 :
您也可以將其one-liner設為:
const sum = (...arr) => arr.reduce((a, i) => a ( i || 0), 0);
const sum = (...arr) => {
return arr.reduce((a, i) => {
return a ( i || 0);
}, 0);
};
console.log(sum(1, 2, 3, 4, 5, 6)); // 21
console.log(sum(-10, 15, 100)); // 105
console.log(sum()); // 0
console.log(sum(1, "fqwfqwf", {}, [], 3, 4, 2, true, false)); // 11. true = 1
uj5u.com熱心網友回復:
你可以filter陣列和reduce
const sum = (...arr) => arr.filter(Number).reduce((a, c) => a c, 0);
console.log(sum(1, 2, 3, 4, 5, 6)); // 21
console.log(sum(-10, 15, 100)); // 105
console.log(sum()); // 0
console.log(sum(1, "fqwfqwf", {}, [], 3, 4, 2, true, false)); // 11. true = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364854.html
標籤:javascript
下一篇:動態更改字體大小以使文本適合容器
