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
属性 的 theRest
对象,但有时我想遍历一个值数组(例如一周中的几天)并以编程方式快速解构对象。
这可能吗?如果可以,怎么做?
谢谢!
你可以拿 computed property names and rename the property (assigning to new variable names).
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);
是否可以通过使用存储在变量中的 属性 名称来解构 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
属性 的 theRest
对象,但有时我想遍历一个值数组(例如一周中的几天)并以编程方式快速解构对象。
这可能吗?如果可以,怎么做?
谢谢!
你可以拿 computed property names and rename the property (assigning to new variable names).
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);