Javascript (ES6),基于关闭变量的解构

Javascript (ES6), destructure based off variable

我想知道是否有一种方法可以使用变量来解构 javascript 中的对象。当我在我的函数中做这样的事情时 -

mutateTaxon(data) {
    const { content } = data;
    const { plp } = content || {};
    ...

这工作正常,但我需要根据另一个因素扩展此功能,如果我需要使用 data.content(它现在正在使用)或 data.collection,这个因素可能会改变。所以我在 data 上有另一个节点 - 它改变了调用。我正在尝试这样的事情 -

mutateTaxon(data) {
    const match = lowerCase(data.taxonomy.name);
    const { match } = data;
    const { plp } = match || {};

匹配变量的计算结果为内容或集合(如预期)。但是,这似乎不起作用,也许这是不可能的?我在想也许需要评估 match var 所以我尝试了类似 -

const { [[match]] } = data;

这也不起作用。也许这是不可能的,或者我正在接近这个错误。我想知道,这样的事情可能吗?谢谢!

 const key = lowerCase(data.taxonomy.name);
 const match = data[key];

我认为对象解构在这里没有用。但如果你需要:

  const key = lowerCase(data.taxonomy.name);
  const {[key]: match} = data;

正如 Jonas W. 所说,解构语法会比方括号表示法麻烦一点,但是尽管如此,您还是可以这样做:

mutateTaxon(data) {
  const key = lowerCase(data.taxonomy.name);
  const { [key]: { plp } = {} } = data;

演示

const foo = { bar: { plp: 'success' } }
const key = 'bar'
const { [key]: { plp } = {} } = foo

console.log(plp)

并确认默认参数 = {} 按预期工作:

const foo = { }
const key = 'bar'
const { [key]: { plp } = {} } = foo

console.log(plp)