素材牛VIP会员
js求个数组中对象合并的算法
 ch***az  分类:JavaScript  人气:1762  回帖:3  发布于6年前 收藏

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

数据结构如下:

 标签:es6javascript

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv1 新人
Al***ay 职业无 6年前#1
{ {}, {} }

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);
    });
});
Lv3 码奴
gu***di 软件测试工程师 6年前#2

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)   [{},{},{},{},{}]输出这种格式

'下次把你格式贴出来'
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)  
输出        

Lv6 码匠
坐***来 技术总监 6年前#3

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

<!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>
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取