对不起标题,我无法真正总结。
我无法想到一种简单的方法来做我想要实现的目标。 基本上我有一个大物体作为这种地图:
{
'room_id_1': {users:{}, property1: x, property2: y, property3: [...]},
'room_id_2': {users:{}, property1: x, property2: y, property3: [...]},
}
我需要通过WebSockets发送此对象的一部分,但它可能会变得非常大,我不需要它的所有数据,只需要每个room_id的一些属性。参考上面的例子,假设我不需要发送property2和property3,这是一个非常大的数组。
所以我的问题是,我可以创建具有相同数据结构的对象的最佳方法是什么,只是没有每个键的所述属性(或者只是克隆其他属性,我知道并且是有限的)? 那就是:
{
'room_id_1': {users:{}, property1: x},
'room_id_2': {users:{}, property1: x},
}
这只是另一个含义,这可能很重要:property2也可能是未定义的。 美东时间 我认为可能有一个优雅的ES6解决方案使用Destructuring assignements,但我不能自己想出一个:我对语法不熟悉,我只是看不出自己能做到这一点。
答案 0 :(得分:0)
这就是你可以做到的。
var bigObject = {
'room_id_1': {users:{}, property1: 3, property2: 5, property3: [1, 2, 3, 4]},
'room_id_2': {users:{}, property1: 6, property2: 9, property3: [1, 2, 3, 4]}
};
Object.keys(bigObject)
.reduce((prev, propKey) => {
let newObj = {};
['users', 'property1'].forEach(eachKey => {
newObj[eachKey] = bigObject[propKey][eachKey];
});
prev[propKey] = newObj;
return prev;
}, {});