我有一个嵌入对象的对象,如下所示:
var object = { 'A' :
{'cc' : { 'cc data 1' : 'data 1 cc for A',
'cc data 2' : 'data 2 cc for A'
},
'dd' : 'data dd for A'
},
'B' :
{'cc' : { 'cc data 1' : 'data 1 cc for B' ,
'cc data 2' : 'data 2 cc for B'
},
'dd' : 'data dd for B'
}
};
我希望为'cc'数据创建另一个对象并跳过'dd'数据。这段代码块说明了我要做的事情:
var newObj = {};
for ( key in object ) {
newObj[key] = {} ;
newObj[key]['cc'] = {} ;
newObj[key]['cc'] = object[key]['cc'] ;
}
console.log(util.inspect(newObj));
有更好的方法吗?我考虑使用选择,但无法确定如何。我认为使用通配符可能看起来像这样的解决方案:
_.pick(object[ * ], 'cc' ) // does not work
谢谢。
答案 0 :(得分:2)
您可以使用Object.keys()
和reduce()
var object = {
'A': {
'cc': 'Data cc for A',
'dd': 'Data dd for A'
},
'B': {
'cc': 'Data cc for B',
'dd': 'Data dd for B'
}
};
var newObj = Object.keys(object).reduce(function(r, e) {
r[e] = {cc: object[e].cc};
return r;
}, {});
console.log(newObj)
答案 1 :(得分:0)
你正在做的事情就像它将要获得的效率一样,你可以通过不创建中间对象来缩短它:
for (var key in object) {
newObj[key] = {
cc: object[key].cc
}
}
答案 2 :(得分:0)
ES6的另一种可能性。更好?那一切都取决于许多事情,包括意见。
const javascriptObject = {
'A': {
'cc': 'Data cc for A',
'dd': 'Data dd for A'
},
'B': {
'cc': 'Data cc for B',
'dd': 'Data dd for B'
}
};
const myNewObject = {};
for (let key of Object.keys(javascriptObject)) {
myNewObject[key] = Object.assign({}, javascriptObject[key]);
delete myNewObject[key].dd;
}
console.log(myNewObject);