第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Javascript:如果總和在遍歷數(shù)組時(shí)滿足條件,則拆分?jǐn)?shù)組的最佳方法

Javascript:如果總和在遍歷數(shù)組時(shí)滿足條件,則拆分?jǐn)?shù)組的最佳方法

一只甜甜圈 2023-05-11 10:05:21
我有這個(gè)數(shù)組[ 1, -1, -1, -1, 1, -1, 1, 1 ]我正在嘗試找出獲得我需要做的事情的最佳方法。我想弄清楚我是否需要使用 reduce 方法、do..while 循環(huán)或其他方法。首先,我需要遍歷數(shù)組。其次,我需要在遍歷數(shù)組時(shí)進(jìn)行總結(jié)。如果總和是0然后將加起來(lái)的元素推入0新數(shù)組。例如,如果數(shù)組中的前兩個(gè)元素[1, -1]相加為0,則將 [1, -1] 推入新數(shù)組以獲得此結(jié)果:[[1, -1], [-1, -1, 1, -1, 1, 1]]因此,我認(rèn)為也許該reduce方法是這項(xiàng)工作的最佳人選。這是我的嘗試:let hikeArr = [ 1, -1, -1, -1, 1, -1, 1, 1 ];let newArr = hikeArr.reduce((a, b) => {        let sum = a + b;        if( sum == 0) {            a.push(b)        }        return a;    }, []);    console.log("newArr", newArr);有什么建議么?
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

我認(rèn)為效果不會(huì)reduce太好,因?yàn)槟枰?3 個(gè)獨(dú)立的事物:當(dāng)前總和、組合數(shù)組和進(jìn)行中的數(shù)組。(即使只需要跟蹤一個(gè)對(duì)象,IMO 也不太合適for)改用外部變量和循環(huán):

let hikeArr = [ 1, -1, -1, -1, 1, -1, 1, 1 ];


const output = [];

let sum = 0;

let subarr = [];

for (const num of hikeArr) {

? sum += num;

? subarr.push(num);

? if (sum === 0) {

? ? output.push(subarr);

? ? subarr = [];

? }

}

console.log(output);



查看完整回答
反對(duì) 回復(fù) 2023-05-11
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

這可以簡(jiǎn)單地使用Array.reduce.


在Array.reduce回調(diào)中,對(duì)于輸入current value,您可以將該值推送到subArr并計(jì)算總和。


一旦sum達(dá)到0,將其推subArr到main result并將它們格式化為初始值。


let hikeArr = [ 1, -1, -1, -1, 1, -1, 1, 1 ];



let subArr = [];

let sum = 0;

const result = hikeArr.reduce((acc, cur) => {

  subArr.push(cur);

  sum += cur;

  if (sum === 0) {

    acc.push(subArr);

    subArr = [];

    sum = 0;

  }

  return acc;

}, []);

console.log(result);


查看完整回答
反對(duì) 回復(fù) 2023-05-11
?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

您需要一個(gè)臨時(shí)數(shù)組,最好帶有一個(gè)閉包以及一個(gè)使用 reduce 求和的變量。


let array = [1, -1, -1, -1, 1, -1, 1, 1],

    result = array.reduce(((temp, sum) => (r, v) => {

        temp.push(v);

        sum += v;

        if (!sum) {

            r.push(temp);

            temp = [];

        }

        return r;

    })([], 0), []);


console.log(result);


查看完整回答
反對(duì) 回復(fù) 2023-05-11
  • 3 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)