- 
				
				鸿蒙传说 您可以使用map、reduce方法和一个循环的组合来执行此for...in操作,该循环会将键数组转换为对象数组。然后你可以使用数组解构来获得两个独立的对象。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) 
- 
				
				一只甜甜圈 问题是map返回一个包含替换元素的数组,而你想要一个对象。由于您已经在使用 Lodash,因此您可以使用它mapValues来转换对象的值并返回对象而不是数组。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> 
- 
				
				撒科打诨 下一个提供的示例代码是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; } 
- 
				
				慕斯王 您可以使用给定对象的条目来映射所需的键。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; }