嵌套对象的计算解构

5 javascript nested object destructuring ecmascript-6

通过解构可以很方便地从Objects 中提取属性:

let o = {id: "100", name: "Jane Doe", address: {id:1, city:"Fargo"}},
 key = "address";

let {address: {id: id}} = o; // 1
Run Code Online (Sandbox Code Playgroud)

解构模式也可以计算:

let {[key]: {city: city}} = o; // Fargo
Run Code Online (Sandbox Code Playgroud)

但显然不可能动态提取嵌套对象的属性:

key = "address.city";
({[key]: city} = o); // undefined
Run Code Online (Sandbox Code Playgroud)

是否可以Object使用计算模式解构嵌套的 s?

Ber*_*rgi 4

不,这是不可能的。解构仅适用于您了解其结构的对象。你当然可以这样做

var keys = ["address", "city"];
var {[keys[0]]: {[keys[1]]: city}} = o;
Run Code Online (Sandbox Code Playgroud)

但不适用于任意嵌套的对象。您必须使用递归函数来遍历属性路径。请参阅问题将点表示法中的 JavaScript 字符串转换为对象引用以及许多其他问题。