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

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

關于數組 js

關于數組 js

函數式編程 2019-03-14 18:15:56
let columns = ["name", "age", "weight"] // 里面的值是接口請求回來的,不固定有多少個的let  data = [["jack", 18, 50],["jenny", 22, 60]] let  arr = []//最后結果我想要這樣的[ {"name": "jack","age": 18,"weight": 50},{"name": "jenny","age": 22,"weight": 60},{"name": "合計","age": 40,"weight": 110}]{"name": "合計","age": 40,"weight": 110} 最后一個是age跟weight進行累積相加push到數組中
查看完整描述

3 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

        //reduce的初始值

        const initValue = {}

        columns.forEach((param, index) => initValue[param] = index == 0 ? '合計' : 0);


        data.reduce((total, current, index) => {

            //合計累加

            const item = {}

            columns.forEach((param, index) => {

                item[param] = current[index]

                //不是name的話,累加

                if (index != 0) total[param] += current[index]

            })

            //把current push到arr

            arr.push(item)


            //最后一次循環時,把total push到arr

            if (index == data.length - 1) arr.push(total)

            return total

        }, initValue)


查看完整回答
反對 回復 2019-04-09
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

let all = {

  name: "合計",

  age: 0,

  weight: 0

}


data.forEach(item => {

  arr.push(

    {

      name: item[0],

      age: item[1],

      weight: item[2]

    };

  all.age = all.age + item[1];

  all.weight = all.weight + item[2];

});

arr.push(all);


查看完整回答
反對 回復 2019-04-09
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

const summary = data.reduce((carry, item) => {

  arr.push({

    [columns[0]]: item[0],

    [columns[1]]: item[1],

    [columns[2]]: item[2],

  });


  carry[1] += item[1];

  carry[2] += item[2];

}, ['合計', 0 , 0]);


arr.push(summary);


查看完整回答
反對 回復 2019-04-09
  • 3 回答
  • 0 關注
  • 456 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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