相关疑难解决方法(0)

在数组内构造所有元素的对象属性

在最基本的形式中,拥有一个对象数组:

let arr = [
  {val:"a"},
  {val:"b"}
];
Run Code Online (Sandbox Code Playgroud)

如何使用解构,只获得价值['a', 'b'].

获得第一个值很容易:

let [{val:res}] = arr; //res contains 'a'
Run Code Online (Sandbox Code Playgroud)

获取数组内的所有值可以使用rest运算符完成:

let [...res] = arr; //res contains all objects
Run Code Online (Sandbox Code Playgroud)

结合这些,我希望能够使用:

let [...{val:res}] = arr; //undefined, expected all 'val's (['a', 'b'])
Run Code Online (Sandbox Code Playgroud)

以上返回undefined(在FF中测试).一些进一步的测试似乎表明,在使用对象解构时添加rest运算符也不使用迭代,而是返回原始对象,例如let [...{length:res}] = arr; //res= 2.其他一些试验,例如let [{val:...res}] = arr;let [{val}:...res] = arr;产生语法错误.

使用其他方法很容易,例如map在数组上使用,但大多数情况下我在解析多个级别(一个包含自己的属性包含数组的对象的数组)时会偶然发现这个问题.因此,我真的想通过解构来解决如何做到这一点.为方便起见:一个测试小提琴

编辑

如果我没有解释问题的目标,我表示歉意.我不是在寻找特定问题的解决方案,只是为了找到在解构时使用的正确语法.

否则制定,第一个问题是:在上面的例子中,为什么不let [...{val:res}] = arr;返回所有值(['a', 'b']).第二个问题是:使用具有嵌套对象解构的rest运算符的正确语法是什么?(很确定我已经在这里混淆了一些定义).似乎后者不受支持,但我没有遇到任何文件(以及为什么)它不会.

javascript destructuring

10
推荐指数
2
解决办法
6943
查看次数

标签 统计

destructuring ×1

javascript ×1