Javascript(ES6),基于变量的destructure

时间:2018-04-05 15:10:57

标签: javascript ecmascript-6 destructuring

我想知道是否有办法使用变量来解析javascript中的对象。我在我的职能部门做了类似的事情 -

[['hello', 'bye', 'start'], ['john', 'riya', 'tom']]

这工作正常,但是如果我需要使用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 || {}; var,所以我尝试了类似的东西 -

match

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

2 个答案:

答案 0 :(得分:7)

正如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)




答案 1 :(得分:6)

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

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

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