混合解构

对象与数组解构能被用在一起,以创建更复杂的解构表达式。在对象与数组混合而成的结构中,这么做便能准确提取其中你想要的信息片段。例如:

let node = {
        type: "Identifier",
        name: "foo",
        loc: {
            start: {
                line: 1,
                column: 1
            },
            end: {
                line: 1,
                column: 4
            }
        },
        range: [0, 3]
    };

let {
    loc: { start },
    range: [ startIndex ]
} = node;

console.log(start.line);        // 1
console.log(start.column);      // 1
console.log(startIndex);        // 0

此代码将 node.loc.startnode.range[0] 提取出来,并将它们的值分别存储到 startstartIndex 中。要记住解构模式中的 loc:range: 只是对应于 node 对象中属性的位置。混合使用对象与数组解构,node 的任何部分都能提取出来。对于从 JOSN 配置结构中抽取数据来说,这种方法尤其有用,因为它不需要探索整个结构。