ajm*_*jma 5 javascript destructuring ecmascript-6
我想知道是否有办法使用变量来解析javascript中的对象.在我的功能中我在做什么这样的事情 -
mutateTaxon(data) {
const { content } = data;
const { plp } = content || {};
...
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我需要根据另一个因素扩展此功能,如果我需要使用data.content
它(现在正在使用)或者可以改变data.collection
.所以我有另一个节点data
- 它改变了对呼叫的呼叫.我正在尝试这样的事情 -
mutateTaxon(data) {
const match = lowerCase(data.taxonomy.name);
const { match } = data;
const { plp } = match || {};
Run Code Online (Sandbox Code Playgroud)
匹配变量将评估内容或集合(如预期).但这似乎不起作用,也许这是不可能的?我想也许match
需要评估var所以我尝试了类似的东西 -
const { [[match]] } = data;
Run Code Online (Sandbox Code Playgroud)
这也不起作用.也许这是不可能的,或者我正在接近这个错误.我想知道,这样的事情可能吗?谢谢!
正如Jonas W.所说,解构语法会比括号表示法更麻烦,但是,这就是你要这样做的方法:
mutateTaxon(data) {
const key = lowerCase(data.taxonomy.name);
const { [key]: { plp } = {} } = data;
Run Code Online (Sandbox Code Playgroud)
const foo = { bar: { plp: 'success' } }
const key = 'bar'
const { [key]: { plp } = {} } = foo
console.log(plp)
Run Code Online (Sandbox Code Playgroud)
并确认默认参数= {}
按预期工作:
const foo = { }
const key = 'bar'
const { [key]: { plp } = {} } = foo
console.log(plp)
Run Code Online (Sandbox Code Playgroud)
const key = lowerCase(data.taxonomy.name);
const match = data[key];
Run Code Online (Sandbox Code Playgroud)
我不认为对象解构在这里很有用.但如果你需要:
const key = lowerCase(data.taxonomy.name);
const {[key]: match} = data;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
183 次 |
最近记录: |