簡體   English   中英

在變量中使用屬性名稱的Javascript對象解構

[英]Javascript object destructure with property name in variable

是否可以通過使用存儲在變量中的屬性名稱來解構 Javascript 中的對象?

這就是我們目前的解構方式。

const myObject = {a: 1, b: 2, c: 3};
let {a, b, c} = myObject;
console.log(a, b, c);

我希望能夠將屬性名稱存儲在變量中:

const myObject = {banana: 1, apple: 2, strawberry: 3};
const chosenFruit = "banana";
const { [[chosenFruit]], ...theRest } = myObject;
console.log(banana); // Should be 1

為了完全公開,我希望能夠這樣做的原因是我想從對象中刪除屬性“banana”。 所以在我的用例中,我想留下不包含banana屬性的theRest對象,但有時我想遍歷一組值(例如一周中的幾天)並以編程方式快速解構對象。

這可能嗎? 如果是這樣,如何?

謝謝!

您可以采用計算出的屬性名稱並重命名該屬性( 分配給新的變量名稱)。

 const myObject = { banana: 1, apple: 2, strawberry: 3 }; const chosenFruit = "banana"; const { [chosenFruit]: fruit, ...theRest } = myObject; console.log(fruit); // 1 console.log(theRest);

 const myObject = {banana: 1, apple: 2, strawberry: 3}; const chosenFruit = "banana"; const newThing = { ...myObject }; delete newThing[chosenFruit]; console.log(myObject, newThing);

此版本使用解構進行克隆,然后移除不需要的屬性。

具有解構參數的變體:

 const pick = (fruit, {[fruit]: out, ...fruits}) => [out, fruits]; const [fruit, fruits] = pick('banana', basket); console.log(fruit); console.log(fruits); console.log(basket);
 <script>const basket = { banana: 1, apple: 2, strawberry: 3 };</script>

這也適用於非動態選擇,如果您希望變量名稱與水果名稱相同

const myObject = { banana: 1, apple: 2, strawberry: 3 };
const { banana, ...theRest } = myObject;

console.log(banana); // 1
console.log(theRest);

暫無
暫無

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

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