js求个数组中对象合并的算法

ypinchina
  • 269

可以使用es6,es5.
我的数据结构是 [{ {}, {} }, { {}, {} }, ......]
需求:把目的数组的第一层的对象大括号有序的合并,上面例子最后期待变成 { {}, {}, {}, {},...... },返回的是合并后的对象,谢谢各位

数据结构如下:

clipboard.png

clipboard.png

回复
阅读 2.2k
4 个回答
✓ 已被采纳

Object.assign()

https://segmentfault.com/a/11...

arr.map(
    //元素合并
)

'你这种要合并的格式是不对啊的。。'
//如果是 [[{},{}],[{},{}],[{},{}]]这种俩个循环
   var arr = [[{a:1},{a:2}],[{a:3},{a:4}],[{a:5},{a:6}]],arr1 = []
    arr.forEach(function(a){
        a.forEach(a1=>{
            arr1.push(a1)
       })
    })
    console.log(arr1)   [{},{},{},{},{}]输出这种格式

clipboard.png

'下次把你格式贴出来'
var obj = {0 : {name:1},1: {age:2},length:5}
        var arr = []
        for(let i=0; i <obj.length/2 -1; i++){
            arr.push(obj[i])
        }
        console.log(arr)  
输出        

clipboard.png

{ {}, {} }

js中这种格式是不能存在的,我的chrome最新版64下效果:
图片描述

如果你的数组是这样:可以帮你写一下试试

var tmp = [];
var arr = [[{a:1},{a:2}],[{a:3},{a:4}]];
arr.forEach(function(v){
    v.forEach(function(vv){
        tmp.push(vv);
    });
});

我这样可以的,你看下,复制就行

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
    var arr = [[{a:1},{a:2}],[{a:3},{a:4}]];
    var arr1=[];
    arr.forEach(function(a){
        a.forEach(a1=>{
        arr1.push(a1)
        })
    })
 console.log(arr1);


var obj={};
        for (var k in arr1) {
        obj[k] = arr1[k];        
}
console.log(obj)
    
    </script>
</body>
</html>

let json = {{...obj1},{...obj2}};

你知道吗?

宣传栏