2017-04-18 63 views
-1

我在看与以下结构的对象:重新排列JavaScript对象结构

[ 
    [ 
    { 
     "attr1":"1", 
     "attr2":"2", 
     "attr3":"3" 
    } 
    ], 
    [ 
    { 
     "attr1":"1", 
     "attr2":"2", 
     "attr3":"3" 
    } 
    ], 
    [ 
    { 
     "attr1":"1", 
     "attr2":"2", 
     "attr3":"3" 
    } 
    ] 
] 

只是着眼于它的结构,所有我需要这个对象做的是重新安排它,使它结束于以下结构:

[ 
    { 
    "attr1":"1", 
    "attr2":"2", 
    "attr3":"3" 
    }, 
    { 
    "attr1":"1", 
    "attr2":"2", 
    "attr3":"3" 
    }, 
    { 
    "attr1":"1", 
    "attr2":"2", 
    "attr3":"3" 
    } 
] 

这是如何在纯Javascript或核心jQ库中完成的?

+0

所以,你只是想借此每个内部数组的第一个元素?你可以用'myArray.map(x => x [0])''离开。 –

回答

2

所以,你只需要删除第二级阵列。轻松完成与Array.map()

var old = [ 
 
    [ 
 
    { 
 
     "attr1":"1", 
 
     "attr2":"2", 
 
     "attr3":"3" 
 
    } 
 
    ], 
 
    [ 
 
    { 
 
     "attr1":"1", 
 
     "attr2":"2", 
 
     "attr3":"3" 
 
    } 
 
    ], 
 
    [ 
 
    { 
 
     "attr1":"1", 
 
     "attr2":"2", 
 
     "attr3":"3" 
 
    } 
 
    ] 
 
]; 
 

 
// Map loops through an array and returns a new array filled with whatever the 
 
// supplied callback function returns. 
 
var newArry = old.map(function(value){ 
 
    // Get the first object stored in the second-level array, but not the array itself 
 
    return value[0]; 
 
}); 
 

 
console.log(newArry);

+0

您预期只有一个数组中的项目,它看起来不是很通用。 –

+0

@NinaScholz真的,但是当他说他正在处理的结构是什么时,OP是特定的。 –

0

Array#reduce可能是有帮助的。

var arr = [[{"attr1":"1","attr2":"2","attr3":"3"}],[{"attr1":"1","attr2":"2","attr3":"3"}],[{"attr1":"1","attr2":"2","attr3":"3"}]], 
 
    res = arr.reduce((a,b) => a.concat(b)); 
 

 
    console.log(res);

0

你可以使用Array#concatspread syntax ...

var data = [[{ attr1: "1", attr2: "2", attr3: "3" }], [{ attr1: "1", attr2: "2", attr3: "3" }], [{ attr1: "1", attr2: "2", attr3: "3" }]], 
 
    flat = [].concat(...data); 
 

 
console.log(flat);
.as-console-wrapper { max-height: 100% !important; top: 0; }

ES5

var data = [[{ attr1: "1", attr2: "2", attr3: "3" }], [{ attr1: "1", attr2: "2", attr3: "3" }], [{ attr1: "1", attr2: "2", attr3: "3" }]], 
 
    flat = [].concat.apply([], data); 
 

 
console.log(flat);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

@ScottMarcus,第二个应该适用于较老的JavaScript实现。 –