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

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

不使用 For 循環(huán)處理任何數(shù)組

不使用 For 循環(huán)處理任何數(shù)組

MMTTMM 2023-03-24 15:15:13
我想在不使用FOR循環(huán)的情況下動態(tài)實現(xiàn)輸出。輸入是多個對象的數(shù)組。var input = [  {    "name": "Siner1",    "RTime": 40,    "FTime": 30  },  {    "name": "Siner2",    "RTime": 50,    "FTime": 60  }]var output = [  {    "RTime": {      "Siner1": 40,      "Siner2": 50    },    "FTime": {      "Siner1": 30,      "Siner2": 60    }  }]//console.log(input)console.log(output);有人可以幫助我嗎?
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

方法一

var input = [

  {

    "name": "Siner1",

    "RTime": 40,

    "FTime": 30

  },

  {

    "name": "Siner2",

    "RTime": 50,

    "FTime": 60

  }

]


var output = input.reduce(function(initial,next){

   initial["RTime"][next["name"]]=(initial["RTime"][next["name"]] || 0 ) + next["RTime"];

   initial["FTime"][next["name"]]=(initial["FTime"][next["name"]] || 0 ) + next["FTime"];

   return initial;

},{"RTime":{},"FTime":{}});




console.log(output)

方法二

如果您想要聚合其他鍵或值


var input = [

  {

    "name": "Siner1",

    "RTime": 40,

    "FTime": 30

  },

  {

    "name": "Siner2",

    "RTime": 50,

    "FTime": 60

  }

]


var keys = ['RTime','FTime'];

output=input.reduce(function(initial,next){

   keys.map(function(key){

        initial[key][next["name"]]=(initial[key][next["name"]] || 0 ) + next[key];

   });

   return initial;

},keys.reduce(function(data,key){

   data[key]={};

   return data;

},{}));


console.log(output)


查看完整回答
反對 回復 2023-03-24
?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

提供的通用方法基于Array.prototype.reduce. 由于它使用accumulator其回調(diào)函數(shù)的參數(shù)作為可配置項,collector因此它完全不知道任何給定列表的任何已處理項目的鍵。只需要提供已處理項目的(源)鍵值,然后作為新分組鍵值的目標鍵...


function restructureKeysAndValues(collector, item) {

  const {

    keyOfTargetValue,

    registry,

    index,

    list

  } = collector;

  const targetKey = item[keyOfTargetValue];


  Object.entries(item).forEach(([key, value]) => {

    if (key !== keyOfTargetValue) {


      let keyGroup = registry[key];

      if (!keyGroup) {

        keyGroup = registry[key] = { [key]: {} };


        Object.assign(index, keyGroup);

        list.push(keyGroup);

      }

      keyGroup[key][targetKey] = value;

    }

  });

  return collector;

}


console.log('a list of group objects ...', [{


    "name": "Siner1",

    "RTime": 40,

    "FTime": 30

  }, {

    "name": "Siner2",

    "RTime": 50,

    "FTime": 60


  }].reduce(restructureKeysAndValues, {


    keyOfTargetValue: 'name',

    registry: {}, // - for internal tracking

    index: {},    // - for external use, output as map/index. 

    list: []      // - for external use, output as array/list.


  }).list

);


console.log('a single grouped object ...', [{


    "name": "Siner1",

    "RTime": 40,

    "FTime": 30

  }, {

    "name": "Siner2",

    "RTime": 50,

    "FTime": 60


  }].reduce(restructureKeysAndValues, {


    keyOfTargetValue: 'name',

    registry: {}, // - for internal tracking

    index: {},    // - for external use, output as map/index. 

    list: []      // - for external use, output as array/list.


  }).index

);


console.log('a list of group objects ...', [{


    "name": "Siner1",

    "RTime": 40,

    "FTime": 30,

    "CTime": 70,

    "ATime": 90

  }, {

    "name": "Siner2",

    "RTime": 50,

    "FTime": 60,

    "CTime": 30,

    "ATime": 40

  }, {

    "name": "Siner3",

    "RTime": 90,

    "FTime": 20,

    "CTime": 10,

    "ATime": 20


  }].reduce(restructureKeysAndValues, {


    keyOfTargetValue: 'name',

    registry: {}, // - for internal tracking

    index: {},    // - for external use, output as map/index. 

    list: []      // - for external use, output as array/list.


  }).list

);

.as-console-wrapper { min-height: 100%!important; top: 0; }


查看完整回答
反對 回復 2023-03-24
  • 2 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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