5 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用嵌套數(shù)組,并循環(huán)數(shù)組而不是硬編碼兩個(gè)數(shù)組變量。
您可以使用arrays.map()來(lái)獲取所有長(zhǎng)度,以便計(jì)算最大長(zhǎng)度。并對(duì)arrays.reduce()每個(gè)數(shù)組中的一個(gè)元素求和。
const addTogether = (...arrays) => {
let result = [];
let len = Math.max(...arrays.map(a => a.length));
for (let i = 0; i < len; i++) {
result.push(arrays.reduce((sum, arr) => sum + (arr[i] || 0), 0));
}
return result
}
console.log(addTogether([1, 2, 3], [4, 5], [6]));

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
解決方案:
const addTogether = (...args) => {
let result = [];
let max = 0;
args.forEach((arg)=>{
max = Math.max(max,arg.length)
})
for(let j=0;j<max;j++){
result[j]= 0
for (let i = 0; i < args.length; i++) {
if(args[i][j])
result[j]+= args[i][j]
}
}
return result
}
console.log(addTogether([1, 2, 3], [4, 5], [6]))

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以在函數(shù)內(nèi)部使用參數(shù)對(duì)象。
arguments
是一個(gè)可在函數(shù)內(nèi)部訪問(wèn)的類數(shù)組對(duì)象,其中包含傳遞給該函數(shù)的參數(shù)值。
const addTogether = function () {
? const inputs = [...arguments];
? const maxLen = Math.max(...inputs.map((item) => item.length));
? const result = [];
? for (let i = 0; i < maxLen; i ++) {
? ? result.push(inputs.reduce((acc, cur) => acc + (cur[i] || 0), 0));
? }
? return result;
};
console.log(addTogether([1,2,3], [4,5], [6]));

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
用于rest param syntax接受任意數(shù)量的參數(shù)。按外部數(shù)組的長(zhǎng)度降序?qū)ν獠繑?shù)組進(jìn)行排序。通過(guò)使用解構(gòu)賦值將內(nèi)部數(shù)組的第一個(gè)和其余部分分開(kāi)。最后使用Array.prototype.map()遍歷第一個(gè)數(shù)組,因?yàn)樗亲畲蟮臄?shù)組,并使用Array.prototype.reduce()方法來(lái)獲取總和。
const addTogether = (...ar) => {
ar.sort((x, y) => y.length - x.length);
const [first, ...br] = ar;
return first.map(
(x, i) => x + br.reduce((p, c) => (i < c.length ? c[i] + p : p), 0)
);
};
console.log(addTogether([1, 2, 3], [4, 5], [6]));

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
不要使用for
要求您知道每個(gè)數(shù)組長(zhǎng)度的循環(huán),而是嘗試使用不需要的東西。例如 -while
循環(huán)。
使用虛擬變量遞增并為每個(gè)數(shù)組重置它,并將循環(huán)終止條件設(shè)置為 - arr[i] === null
。
添加回答
舉報(bào)