Javascript 提取嵌入式对象元素
我有一个嵌入对象的对象,如下所示:Javascript 提取嵌入式对象元素,javascript,node.js,Javascript,Node.js,我有一个嵌入对象的对象,如下所示: 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'
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,但无法确定如何使用。我认为,使用通配符时,解决方案可能看起来像这样:
_.pick(object[ * ], 'cc' ) // does not work
谢谢。您可以使用
Object.keys()
和reduce()
var对象={
“A”:{
“抄送”:“A的数据抄送”,
'dd':'A的数据dd'
},
“B”:{
“抄送”:“B的数据抄送”,
'dd':'B的数据dd'
}
};
var newObj=Object.keys(Object).reduce(函数(r,e){
r[e]={cc:object[e].cc};
返回r;
}, {});
console.log(newObj)
您可以使用Object.keys()
和reduce()
var对象={
“A”:{
“抄送”:“A的数据抄送”,
'dd':'A的数据dd'
},
“B”:{
“抄送”:“B的数据抄送”,
'dd':'B的数据dd'
}
};
var newObj=Object.keys(Object).reduce(函数(r,e){
r[e]={cc:object[e].cc};
返回r;
}, {});
console.log(newObj)
您所做的是尽可能高效的,您可以通过不创建中间对象来缩短它:
for (var key in object) {
newObj[key] = {
cc: object[key].cc
}
}
您所做的是尽可能提高效率,您可以通过不创建中间对象来缩短它:
for (var key in object) {
newObj[key] = {
cc: object[key].cc
}
}
ES6中的另一种可能性。更好?这取决于很多事情,包括观点
const javascriptObject={
“A”:{
“抄送”:“A的数据抄送”,
'dd':'A的数据dd'
},
“B”:{
“抄送”:“B的数据抄送”,
'dd':'B的数据dd'
}
};
const myNewObject={};
for(让Object.keys的key(javascriptObject)){
myNewObject[key]=Object.assign({},javascriptObject[key]);
删除myNewObject[key].dd;
}
log(myNewObject)代码>ES6中的另一种可能性。更好?这取决于很多事情,包括观点
const javascriptObject={
“A”:{
“抄送”:“A的数据抄送”,
'dd':'A的数据dd'
},
“B”:{
“抄送”:“B的数据抄送”,
'dd':'B的数据dd'
}
};
const myNewObject={};
for(让Object.keys的key(javascriptObject)){
myNewObject[key]=Object.assign({},javascriptObject[key]);
删除myNewObject[key].dd;
}
log(myNewObject)代码>有很多方法可以做到这一点,而要求更好的方法是相当固执己见的。数据的最后一次编辑也极大地改变了请求/可能性。数据必须是原始数据的副本,还是共享引用可以?这是一个静态的结构,还是你没有透露的其他动态?有很多方法可以做到这一点,要求更好是相当固执己见的。最后一次编辑数据也极大地改变了请求/可能性。数据必须是原始数据的副本,还是共享引用可以?这是一个静态的结构,还是有其他你没有透露的动态?有趣-我添加了第三个级别并尝试了你的解决方案-它在第三个级别上也有效。有趣-我添加了第三个级别并尝试了你的解决方案-它在第三个级别上也有效。