亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript:如果總和在遍歷數組時滿足條件,則拆分數組的最佳方法

Javascript:如果總和在遍歷數組時滿足條件,則拆分數組的最佳方法

一只甜甜圈 2023-05-11 10:05:21
我有這個數組[ 1, -1, -1, -1, 1, -1, 1, 1 ]我正在嘗試找出獲得我需要做的事情的最佳方法。我想弄清楚我是否需要使用 reduce 方法、do..while 循環或其他方法。首先,我需要遍歷數組。其次,我需要在遍歷數組時進行總結。如果總和是0然后將加起來的元素推入0新數組。例如,如果數組中的前兩個元素[1, -1]相加為0,則將 [1, -1] 推入新數組以獲得此結果:[[1, -1], [-1, -1, 1, -1, 1, 1]]因此,我認為也許該reduce方法是這項工作的最佳人選。這是我的嘗試: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貢獻1799條經驗 獲得超6個贊

我認為效果不會reduce太好,因為您需要跟蹤 3 個獨立的事物:當前總和、組合數組和進行中的數組。(即使只需要跟蹤一個對象,IMO 也不太合適for)改用外部變量和循環:

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);



查看完整回答
反對 回復 2023-05-11
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

這可以簡單地使用Array.reduce.


在Array.reduce回調中,對于輸入current value,您可以將該值推送到subArr并計算總和。


一旦sum達到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);


查看完整回答
反對 回復 2023-05-11
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

您需要一個臨時數組,最好帶有一個閉包以及一個使用 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);


查看完整回答
反對 回復 2023-05-11
  • 3 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號