![](/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.