【问题标题】:Can I destructure a property named after an integer, on an object? [duplicate]我可以在对象上解构以整数命名的属性吗? [复制]
【发布时间】:2020-06-19 23:13:39
【问题描述】:

我可以解构对象上以整数命名的属性吗?

const { 0 } = { ['0']: 'foo' } // doesn't work

// or

const arr = ['foo']
const { 0, length } = arr // doesn't work

【问题讨论】:

标签: javascript


【解决方案1】:

0 不是有效的标识符(变量名)。您必须将其放入其他变量名中:

const { 0: containsFoo } = { ['0']: 'foo' };
console.log(containsFoo);

const arr = ['foo'];
const { 0: containsFoo, length } = arr;
console.log(containsFoo);

【讨论】:

    【解决方案2】:

    是的,但是您必须为要解构的属性提供一个名称,因为整数不是有效的标识符。例如:

    const { 0: zero } = { ['0']: 'foo' }
    console.log(zero)

    和,

    const arr = ['foo']
    const { 0: zero, length } = arr
    console.log(zero, length)

    这对于像String#matchAll这样的方法很有用:

    const matches = 'foo'.matchAll(/o/gi)
    for(let {0: item, index} of matches)
        console.log(item, index)

    【讨论】:

      【解决方案3】:

      你不能做到var 0 = "something",所以你不能用任何种类的句法变化来做到这一点;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-04
        • 1970-01-01
        • 2018-05-31
        • 2011-10-22
        • 2011-03-11
        • 2020-02-07
        • 1970-01-01
        相关资源
        最近更新 更多