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

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

只獲取對(duì)象的對(duì)象的一些鍵

只獲取對(duì)象的對(duì)象的一些鍵

紅顏莎娜 2023-05-25 18:18:06
我有這個(gè)對(duì)象:const dataset = {  "2019": {    "a": 1,    "b": 2,    "c": 3,    "d": 4  },  "2020": {    "a": 2,    "b": 4,    "c": 6,    "d": 8  },  "2021": {    "a": 10,    "b": 11,    "c": 12,    "d": 13  }}我想獲得這兩個(gè)對(duì)象:const obj1 = {  "2019": {    "a": 1,    "c": 3,  },  "2020": {    "a": 2,    "c": 6,  },  "2021": {    "a": 10,    "c": 12,  }}const obj2 = {  "2019": {    "b": 2,    "d": 4  },  "2020": {    "b": 4,    "d": 8  },  "2021": {    "b": 11,    "d": 13  }}因此,根據(jù)內(nèi)部對(duì)象的一些鍵將對(duì)象“拆分”為兩個(gè)對(duì)象。這是我嘗試過的:function pickKeys(dataObj, keys) {  return Object.entries(dataObj).map(([d, obj]) => {  return { [d]: _.pick(obj, keys) }})}const obj1 = pickKeys(dataset, ['a', 'c'])結(jié)果是:const obj1 = [  { '2019': { a: 1, c: 3 } },  { '2020': { a: 2, c: 6 } },  { '2021': { a: 10, c: 12 } }]所以幾乎在那里,但它并不完美。哪種方法更好?
查看完整描述

4 回答

?
鴻蒙傳說

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

您可以使用map、reduce方法和一個(gè)循環(huán)的組合來執(zhí)行此for...in操作,該循環(huán)會(huì)將鍵數(shù)組轉(zhuǎn)換為對(duì)象數(shù)組。然后你可以使用數(shù)組解構(gòu)來獲得兩個(gè)獨(dú)立的對(duì)象。


const dataset = {"2019":{"a":1,"b":2,"c":3,"d":4},"2020":{"a":2,"b":4,"c":6,"d":8},"2021":{"a":10,"b":11,"c":12,"d":13}}


const [a, b] = [['a', 'c'], ['b', 'd']]

.map(keys => keys.reduce((r, key) => {

  for (let year in dataset) {

    if (!r[year]) r[year] = {}

    r[year][key] = dataset[year][key]

  }


  return r;

}, {}))


console.log(a)

console.log(b)


查看完整回答
反對(duì) 回復(fù) 2023-05-25
?
一只甜甜圈

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

問題是map返回一個(gè)包含替換元素的數(shù)組,而你想要一個(gè)對(duì)象。

由于您已經(jīng)在使用 Lodash,因此您可以使用它mapValues來轉(zhuǎn)換對(duì)象的值并返回對(duì)象而不是數(shù)組。

function?pickKeys(dataObj,?keys)?{
??return?_.mapValues(dataObj,?obj?=>?_.pick(obj,?keys));
}

function pickKeys(dataObj, keys) {

? return _.mapValues(dataObj, obj => _.pick(obj, keys));

}


const dataset = {

? "2019": {

? ? "a": 1,

? ? "b": 2,

? ? "c": 3,

? ? "d": 4

? },

? "2020": {

? ? "a": 2,

? ? "b": 4,

? ? "c": 6,

? ? "d": 8

? },

? "2021": {

? ? "a": 10,

? ? "b": 11,

? ? "c": 12,

? ? "d": 13

? }

}


console.log(pickKeys(dataset, ["a", "c"]));

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>


查看完整回答
反對(duì) 回復(fù) 2023-05-25
?
撒科打諢

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

下一個(gè)提供的示例代碼是reduce基于、通用但在其用法中可配置的……

function createAndCollectSubdata(collector, dataEntry) {


? const { keyLists, subdataList } = collector;

? const [ dataKey, dataValue ] = dataEntry;


? keyLists.forEach((keyList, idx) => {


? ? const data = subdataList[idx] || (subdataList[idx] = {});

? ? const subdata = data[dataKey] || (data[dataKey] = {}) ;


? ? keyList.forEach(key => subdata[key] = dataValue[key]);

? });

? return collector;

}


const dataset = {

? "2019": {

? ? "a": 1,

? ? "b": 2,

? ? "c": 3,

? ? "d": 4

? },

? "2020": {

? ? "a": 2,

? ? "b": 4,

? ? "c": 6,

? ? "d": 8

? },

? "2021": {

? ? "a": 10,

? ? "b": 11,

? ? "c": 12,

? ? "d": 13

? }

};

const [


? acSubdata,

? bdSubdata

??

] = Object.entries(dataset).reduce(createAndCollectSubdata, {


? keyLists: [["a", "c"], ["b", "d"]],

? subdataList: []


}).subdataList;


console.log('acSubdata :', acSubdata);

console.log('bdSubdata :', bdSubdata);

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



查看完整回答
反對(duì) 回復(fù) 2023-05-25
?
慕斯王

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

您可以使用給定對(duì)象的條目來映射所需的鍵。


const

    dataset = { 2019: { a: 1, b: 2, c: 3, d: 4 }, 2020: { a: 2, b: 4, c: 6, d: 8 }, 2021: { a: 10, b: 11, c: 12, d: 13 } },

    groups = [['a', 'c'], ['b', 'd']],

    [result1, result2] = Object

        .entries(dataset)

        .reduce((r, [k, o]) =>

            groups.map((group, i) =>

                group.reduce(

                    (q, g) => ({ ...q, [k]: { ...q[k], [g]: o[g] } }),

                    r[i] || {}

                )

            ),

            []

        );


console.log(result1);

console.log(result2);

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


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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