如何使用 ES6 解构赋值将一个对象赋值给另一个对象

How to use ES6 destructuring assignment to assign one object to another

我需要根据 key 名称从 arrB 复制对象 arrA 中的键值。这是我的两个对象:

let arrA = {
    'aaa':'',
    'bbb':'',
    'ccc':''
}
let arrb = {
    'aaa':'111',
    'bbb':'222',
    'ccc':'333',
    'ddd':'444',
    'eee':'555',
    ...
}

如何使用 ES6 解构性作业执行此操作:

arrA = {
    'aaa':'111',
    'bbb':'222',
    'ccc':'333'
}

解构的目的是将对象中的变量提取到本地范围内。详细了解解构 here。您最好使用不同的工具来解决这个问题。

使用不同函数的组合,您可以这样做:

let arra = {
    'aaa':'',
    'bbb':'',
    'ccc':''
}
let arrb = {
    'aaa':'111',
    'bbb':'222',
    'ccc':'333',
    'ddd':'444',
    'eee':'555'
}

const result = Object.fromEntries(
  Object.keys(arra)
    .map(key => [key, arrb[key]])
)

console.log(result)

首先,我使用 Object.keys(), then I'm creating a list of pairs using the .map() function, and finally I'm turning the pairs into a new object with Object.fromEntries()

从 arra 获取所有密钥

使用 destructing assignment,您必须明确定义要复制的每个 属性:

let arra = {
  'aaa': '',
  'bbb': '',
  'ccc': ''
};
let arrb = {
  'aaa': '111',
  'bbb': '222',
  'ccc': '333',
  'ddd': '444',
  'eee': '555',
};

({aaa: arra.aaa, bbb: arra.bbb, ccc: arra.ccc} = arrb);

console.log(arra);

但是,这段代码重复性很强,最糟糕的是它对复制的内容很明确。

Lodash's pick() 是你的朋友(因为生命太短暂,无法编写无聊的样板代码):

您只需 npm install lodash 并说:

const _ = require('lodash');

_.pick( sourceObjectOrArray, arrayOfDesiredPaths ); 

像这样:

const _      = require('lodash');
const source = {
  a: 1,
  b: 2,
  c: 3,
  d: 4,
  e: 5,
  f: 6,
  g: 7,
}
const picked = _.pick( source, ['a','c','e'] );

console.log( JSON.stringify(picked) );

你会发现 picked 是你所期望的:

{
  a: 1,
  c: 3,
  e: 5
}