长阵列的对象解构解决方案?

时间:2015-10-28 17:16:05

标签: javascript ecmascript-6

查看此代码:

let lecture = {
    id: 2,
    title: "MyTitle",
    topics: [
    {
        title: "John",
        age: 1
    },
    {
        title: "John2",
        age: 2
    },
    {
        title: "John3",
        age: 3
    }]
}

我想提取数组中的主title属性和第三个age(通过对象解构)

I can do it via

let { title:lectureTitle , topics:[,,{age:thirdAge}]} = lecture;
console.log(lectureTitle,thirdAge);//MyTitle 3

问题

但是,如果阵列有100个项目并且我想要99' age怎么办?

那我怎么做?对象解构是否为此提供了解决方案?

2 个答案:

答案 0 :(得分:12)

  

但是如果阵列有100个项目并且我想要99岁的话呢?

数组是对象,所以这样做:

let {title: lectureTitle, topics: {98: {age: thirdAge}}} = lecture;

注意但是[...]类型的解构适用于任何迭代,而{...}仅适用于对象(因此也适用于数组)。因此,上述解决方案不适用于任意迭代(并且没有针对此AFAIK的通用解决方案)。

答案 1 :(得分:0)

回答这个问题可能为时已晚,

const index = 65
const {title: lectureTitle, topics: {[index]: {age: thirdAge}}} = lecture

因为在现实生活中,我们通常会使用动态索引对数组进行解构,所以square brackets而非numbers或仅{ index: {age}}无效。