簡體   English   中英

array.map 的參數中的方括號有什么作用?

[英]what does the square brackets do in the parameter of array.map?

不確定.map(([key, value]) => [key, value * 2])發生了什么我對方括號在該參數中的作用有一個大致了解。 但是有人可以澄清語法規則,或者解釋發生了什么?

這是我對代碼如何工作的看法:

  1. Object.entries 將對象價格轉換為數組。 返回類似[[banana, 1], [orange, 2], [meat, 4]]
  2. map 是一種數組方法,該函數將每個項目的價格加倍。
  3. 然后將 chagnes 重新轉換回對象。

如果地圖通過項目; .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 ]

這樣做是一樣的,因為函數體周圍沒有大括號,它使用該值作為返回值。

現在您要問的代碼沒有使用單個變量作為函數的輸入參數。 它是一個參數,但它通過使用稱為deconstructiondestructuring東西來設置 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM