首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按属性合并2个按属性排序的对象数组

按属性合并2个按属性排序的对象数组
EN

Stack Overflow用户
提问于 2016-10-29 19:55:36
回答 2查看 2.4K关注 0票数 3

我试图将两个对象数组合并在一起。

我已经预置了对象数组,以便它们匹配,我只需要在两个数组中的每个对象之间推送属性。

我认为比双for循环更干净的解决方案,还是我应该只做一个普通的JS解决方案?

两个数组的示例:

代码语言:javascript
复制
[
    {
        provider: 'foo',
        title: 'Title1'
    },
    {
        provider: 'bar',
        title: 'Title2'
    }
]

[
    {
        all: '0',
        novelty: '24'
    },
    {
        all: '4',
        novelty: '12'
    }
]

它应返回:

代码语言:javascript
复制
[
    {
        provider: 'foo',
        title: 'Title1',
        all: '0',
        novelty: '24'
    },
    {
        provider: 'bar',
        title: 'Title2',
        all: '4',
        novelty: '12'
    }
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-29 20:00:51

如果没有提交,您可以使用Array.prototype.map()Object.assign() (如果目标浏览器不支持赋值,则使用angular.merge() ):

代码语言:javascript
复制
var arr1 = [{
      provider: 'foo',
      title: 'Title1'
    }, {
      provider: 'bar',
      title: 'Title2'
    }];

    var arr2 = [{
      all: '0',
      novelty: '24'
    }, {
      all: '4',
      novelty: '12'
    }];

    var result = arr1.map(function(item, index) {
      return Object.assign({}, item, arr2[index]);
    });

    console.log(result);

如果您想使用寄宿,请使用_.zipWith()_.assign()

代码语言:javascript
复制
var arr1 = [{
  provider: 'foo',
  title: 'Title1'
}, {
  provider: 'bar',
  title: 'Title2'
}];

var arr2 = [{
  all: '0',
  novelty: '24'
}, {
  all: '4',
  novelty: '12'
}];

var result = _.zipWith(arr1, arr2, function(a, b) {
  return _.assign({}, a, b);
});

console.log(result);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script>

票数 2
EN

Stack Overflow用户

发布于 2016-10-29 20:03:46

您可以使用ES6来完成这一任务:

代码语言:javascript
复制
data1.map( (obj, i) => Object.assign({}, obj, data2[i]) )

代码语言:javascript
复制
var data1 = [{
        provider: 'foo',
        title: 'Title1'
    }, {
        provider: 'bar',
        title: 'Title2'
    }];
var data2 = [{
        all: '0',
        novelty: '24'
    }, {
        all: '4',
        novelty: '12'
    }];

var merged = data1.map( (obj, i) => Object.assign({}, obj, data2[i]) );

console.log(merged);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40323110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档