繁体   English   中英

更改对象 JavaScript 的结构

[英]Change structure of object JavaScript

我有对象

const obj1 = {
app: {groups: [{name: 'test},{name: 'test2'}],
ap2: {groups: [{name: 'test1'},{name: 'test3'}],
}

如何更改为:

const obj1 = {
groups: [{name: 'test, type: 'app'},{name: 'test2', type: 'app'}, {name: 'test1, type: 'app2'},{name: 'test33', type: 'app2'}],
}

假设原始代码中有错别字,您可以执行以下操作:

const obj1 = {
  app: {groups: [{name: 'test'},{name: 'test2'}]},
  app2: {groups: [{name: 'test1'},{name: 'test3'}]},
}

const obj2 = {
  groups: Object.entries(obj1).flatMap(([type, {groups}]) => 
    groups.map( ({name}) => ({name, type}) )
  )
}

console.log(obj2);

不优雅,但可读;

 const obj1 = { app: { groups: [ {name: 'test'}, {name: 'test2'} ] }, ap2: { groups: [ {name: 'test1'}, {name: 'test3'} ], } } const obj2 = {}; obj2.groups = []; Object.keys(obj1).forEach( function(element) { obj1[element]['groups'].forEach( function(e) { var temp = {}; temp.name = e.name; temp.type = element; obj2.groups.push(temp) }); }); console.log(obj2);

var midObj = {name: '', type: ''};
var obj = {groups: []};
for(var I in obj1) {
  for(var j=0; j<obj1[I]['groups'].length; j++) {
    midObj = {};
    midObj.type = I;
    midObj.name = obj1[I]['groups'][j].name;
    obj['groups'].push(midObj);
  }
}

假设:源对象只定义为:const obj1 = { app: {groups: [{name: 'test},{name: 'test2'}], ap2: {groups: [{name: 'test1'},{名称:'test3'}],}

该解决方案仅适用于提到的源对象。 为了进行相同的操作,但对于另一个源对象,它需要更改循环及其内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM