Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提取嵌入式对象元素_Javascript_Node.js - Fatal编程技术网

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)有很多方法可以做到这一点,而要求更好的方法是相当固执己见的。数据的最后一次编辑也极大地改变了请求/可能性。数据必须是原始数据的副本,还是共享引用可以?这是一个静态的结构,还是你没有透露的其他动态?有很多方法可以做到这一点,要求更好是相当固执己见的。最后一次编辑数据也极大地改变了请求/可能性。数据必须是原始数据的副本,还是共享引用可以?这是一个静态的结构,还是有其他你没有透露的动态?有趣-我添加了第三个级别并尝试了你的解决方案-它在第三个级别上也有效。有趣-我添加了第三个级别并尝试了你的解决方案-它在第三个级别上也有效。