簡體   English   中英

我可以在對象聲明中進行數組解構賦值嗎?

[英]Can I do array destructuring assignment inside an object declaration?

我知道我可以這樣做:

const [MIN_SPEED, MAX_SPEED] = [0.4, 4.0];

我想要的是:

const SpeedManager = {
  [MIN_SPEED, MAX_SPEED]: [0.4, 4.0]
}

這相當於:

const SpeedManager = {
  MIN_SPEED: 0.4,
  MAX_SPEED: 4.0
}

但是語法無效,我該如何實現呢?

這是不可能的 - 任何涉及解構的事情都需要為引用賦值(獨立變量名或嵌套屬性)。 但是在這里,您沒有引用,至少在對象初始值設定項中沒有。

我會堅持使用非解構方法,盡管一個丑陋的選擇是:

 const SpeedManager = {}; ([SpeedManager.MIN_SPEED, SpeedManager.MAX_SPEED] = [0.4, 4.0]); console.log(SpeedManager);

正如所指出的,這是不可能的,另一種方法是壓縮兩個數組,然后使用Object.fromEntries()為您構造對象:

 const zip = (arr1, arr2) => arr1.map((e, i) => [e, arr2[i]]); const res = Object.fromEntries( zip(['MIN_SPEED', 'MAX_SPEED'], [0.4, 4.0]) ); console.log(res);

從數組獲取值和返回對象之間需要一個步驟。

 const convert = ([MIN_SPEED, MAX_SPEED]) => ({ MIN_SPEED, MAX_SPEED }), speedManager = convert([0.4, 4.0]); console.log(speedManager);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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