是否可以在对象内部使用解构分配?
这有效
CREATE TEMP FUNCTION RADIANS(x FLOAT64) AS (
ACOS(-1) * x / 180
);
SELECT RADIANS(37); -- returns 0.6457718232379019
想要这样做
const test = {a: 'hey', b: 'hello'}
const {a,b} = test;
const destruct = {
a,
b
};
答案 0 :(得分:2)
如果我正确理解,看来spread syntax非常适合您的需求。
传播语法“ ...
”使您可以将键/值对从源对象(即test
)“传播”到目标对象(即destruct
):< / p>
const test = {
a: 'hey',
b: 'hello',
c: 'goodbye'
}
const destruct = {
// {a,b}: test <-- invalid syntax
...test // equivalent using the "spread" syntax
};
console.log(destruct)
另外,如果您想从源对象中选择键的子集并将其散布到目标对象中,则可以通过以下方法实现:
const test = {
a: 'hey',
b: 'hello',
c: 'goodbye'
}
/* Spread subset of keys from source object to target object */
const welcomeOnly = {
...({ a, b } = test, { a, b })
}
console.log('exclude goodbye, show welcomes only:', welcomeOnly);
第二个示例通过使用我们想要的键子集(test
和a
)将源对象(即b
)破坏为一个对象。
在该表达式的范围内(即(
和)
之间的所有内容),这些键可以作为局部变量访问。我们利用这一点,并将它们传递给新对象(即{ a, b }
)。由于新对象是在,
之后声明的,因此它将作为表达式的结果返回。
答案 1 :(得分:0)
如果您尝试获取属性的子集,则可以使用rest运算符
const test = {
a: 'hey',
b: 'hello',
c: 'goodbye'
};
const { c, ...destruct } = test;
console.log(destruct);
这将c分配给const,剩余的属性分配给const析构函数。首先列出所有不需要的属性,然后用其余运算符捕获剩余的属性。
也可以使用数组。
const test = ['hey', 'hello', 'goodbye'];
const [ first, ...rest ] = test;
console.log(rest);
答案 2 :(得分:0)
您可以尝试像这样工作以破坏数组!
let abc = {
a: 'hello',
b: 'hey',
c: 'hi, there!'
}
let {a: x, b:y, c:z} = abc;
console.log(x,y,z)
// "hello"
"hey"
"hi, there!"