有什么方法可以解构对象并将其属性分配给数组而不是变量?例如:
const obj = { a: 1, b: 2 };
const { a, b } = obj;
const arr = [a, b];
这可行,但它需要将变量重新声明为数组值。
我试过:
const arr = [(const { a, b } = obj)];
但这是一个语法错误。
我对 Object.values
有类似的想法
const arr = Object.values((const { red } = chalk));`
...但这有同样的问题,即无法在表达式中进行解构。
最佳答案
你真正想要的答案是回到过去并使用 the with
statement在它(正确地)被认为是邪恶之前:
var obj = { a: 1, b: 2 };
var arr;
with (obj) {
arr = [a, b];
}
任何现代答案都需要比您想要的更多的输入。一个相对类型安全的让你更接近的答案是使用字符串文字。把这个贴在图书馆里:
function arrayDestruct<T, K extends keyof T>(obj:T, ...keys: K[]): T[K][] {
return keys.map(k => obj[k]);
}
然后使用它:
const arr = arrayDestruct(obj, 'a', 'b'); // recognized as number[]
您必须键入一些引号,但它有效。 It could even be overloaded to produce tuples ,但我不知道你是否真的足够关心。无论如何,祝你好运!
关于javascript - 将对象属性解构为数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48709596/