[英]what does the square brackets do in the parameter of array.map?
不確定.map(([key, value]) => [key, value * 2])
發生了什么我對方括號在該參數中的作用有一個大致了解。 但是有人可以澄清語法規則,或者解釋發生了什么?
這是我對代碼如何工作的看法:
[[banana, 1], [orange, 2], [meat, 4]]
如果地圖通過項目; 寫.map((item) => [item[0], item[1] * 2])
會更有意義.map((item) => [item[0], item[1] * 2])
學習 javascript.info 的課程
let prices = { banana: 1, orange: 2, meat: 4, }; let doublePrices = Object.fromEntries( // convert to array, map, and then fromEntries gives back the object Object.entries(prices).map(([key, value]) => [key, value * 2]) ); console.log(doublePrices.meat); // 8
在您詢問的代碼片段中,左側與右側完全不同。 讓我們分解一下:
.map(([key, value]) => [key, value * 2])
首先, map
將一個函數作為其參數。 這里的函數本質上是這樣做的:
(entry) => {
const key = entry[0];
const value = entry[1];
const modified_entry = [ key, value * 2 ];
return modified_entry;
}
一種更簡短的寫法是:
(entry) => [ entry[0], entry[1] * 2 ]
這樣做是一樣的,因為函數體周圍沒有大括號,它使用該值作為返回值。
現在您要問的代碼沒有使用單個變量作為函數的輸入參數。 它是一個參數,但它通過使用稱為deconstruction
或destructuring
東西來設置 2 個變量。 這是 Javascript 中的一項功能,可讓您以簡單的方式將對象分解為多個變量。 例如看看這個:
var entry = [ 'meat', 1]
var [ item, price ] = entry
// now item is 'meat', and price is 1, which is nicer than having to do this:
item = entry[0]
price = entry[1]
因此,回到您的代碼,他們將entry
表示為[key,value]
以便它們可以輕松地在函數中使用,並且在=>
的右側,我們有返回值,它是一個新數組翻倍的價格。
請記住,在左側,我們將一個對象分解為新的變量,這些變量獲得了賦值,而在右側,我們正在創建一個正在返回的新 Array 對象。 這可能有點令人困惑,因為它們都具有相同的形式,看起來像方括號中的數組。
另請注意,解構適用於對象和數組,因此這也是有效的代碼:
var obj = { a:1, b:2, c:3 }
var { a, c } = obj
console.log(a,c) // will print "1 3"
解構對象可以讓您只從對象中取出您想要的部分,並創建以鍵命名的變量。 請注意,我們沒有要求b
所以沒有b
變量 - 它只是被忽略了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.