![](/img/trans.png)
[英]Increasing performance of a function which processes an array using destructuring and recursion
[英]Which function is being called using an array destructuring assigment?
let [x, y] = ["Ele", "Stack"].reduce((a, s) => { ax = s; ay = s; return a; }, { x: {}, y: {}});
上面的代码片段会引发错误,因为它试图对 object(键:值)进行数组解构赋值。
我缺乏知识
使用数组解构赋值调用哪个 function?
我认为您遇到了该类型错误,因为数组解构隐式调用Array[Symbol.iterator]
,这是未定义的,因为您实际上是从reduce()
返回 object,而不是数组。 修复方法是将其替换为 Object 解构
let {x, y} = ["Ele", "Stack"].reduce((a, s) => { ax = s; ay = s; return a; }, { x: {}, y: {}}); console.log({ x, y })
array
解构的工作方式就像它获取数组的索引并将其放入您分配的变量中。
例如,假设数组是-
const arr = [1, 2, 3, 4, 5];
现在您想将数组元素解构为变量。
const [a, b] = arr;
这会将arr[0]
的值放入a
并将arr[1]
放入b
。 这样,您可以根据需要分配任意数量。
如果要将两个索引放入两个变量中,并将元素的 rest 放入另一个数组中,则可以使用像这样的扩展运算符来做到这一点 -
const [a, b, ...rest] = arr;
这里, a
取arr[0]
的值, b
取arr[1]
的元素, rest
将 rest 的元素放入rest
数组中。 所以rest
阵列将是-
[3, 4, 5]
我希望这能帮到您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.