我一直在困惑在某些情况下javascript中的对象分解是否适用,而我只是碰到过一种情况。在这段代码中,我只是从this
对象中获取属性,并将它们分配给新的data
对象上的相同属性/值:
const data = {
rating: this.rating,
title: this.title,
text: this.text,
name: this.name,
location: this.location,
email: this.email,
files: this.files
};
可以使用某种对象分解来代替它吗?或者它与该用例无关?
答案 0 :(得分:2)
如果需要this
的所有自有属性,则可以使用传播运算符:
const data = {
...this
}
如果只需要选择一些,则可以在以后删除不必要的属性,或将它们设置为undefined(尽管这与不存在/已删除的属性不同):
const data = {
...this,
unwantedProp: undefined,
}
答案 1 :(得分:0)
您可以使用类似的东西
const choose = (src, ...keys) => keys.reduce((result, key) => ({ ...result, [key]: src[key] }), {});
用法示例
const choose = (src, ...keys) => keys.reduce((result, key) => ({ ...result, [key]: src[key] }), {});
const src = {
rating: 1,
title: 2,
text: 3,
name: 4,
location: 5,
email: 6,
files: 7,
not_me: 8
};
const data = choose(src, 'rating', 'title', 'text', 'name', 'location', 'email', 'files');
console.log(data);
在您的情况下,您在致电select时将使用this
而不是src