两个数组,其中对象成为具有相同长度的新数组,但来自原始数组的所有数据

时间:2017-01-26 14:19:18

标签: javascript angularjs arrays node.js object

我有两个数组,其中有相同数量的对象。我想获取每个数组的第一个对象,并将它们放在一个新数组中作为数组中的第一个对象。然后,我想继续使用以下对象。

var a = [{akey: 'something'}, {bkey: 'somethingelse'}];
var b = [{ckey: 'somethinghere'}, {dkey: 'somethingdiffrent'}];

//some-code-here to make the below part.

var newArray  = [{akey: 'something', ckey: 'somethinghere'},
                 {bkey: 'somethingelse', dkey: 'somethingdiffrent'}];

因此,我仍然拥有旧数组中对象的数据,但在一个新数组中将两个新对象放在一起。 除了重复键,它们可以被覆盖,如下所示:

{aKey: 'data'} + {aKey: 'data'} whould just be {aKey: 'data'}

希望这是有道理的,数组长度相同,a.length = b.length,但对象可能在意义上有所不同。最终的数组将放在ng-repeat(角项目)上。

1 个答案:

答案 0 :(得分:1)

您可以使用Object.assign组合对象,并使用Array#map映射数组。

var a = [{akey: 'something'}, {bkey: 'somethingelse'}, { foo: 'from a' }],
    b = [{ckey: 'somethinghere'}, {dkey: 'somethingdiffrent'}, { foo: 'from b' }],
    c = a.map(function (el, i) {
        return Object.assign({}, el, b[i]);
    });

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

如果您想{ foo: 'from a' },可以切换elb[i]

return Object.assign({}, b[i], el);

var a = [{akey: 'something'}, {bkey: 'somethingelse'}, { foo: 'from a' }],
    b = [{ckey: 'somethinghere'}, {dkey: 'somethingdiffrent'}, { foo: 'from b' }],
    c = a.map(function (el, i) {
        return Object.assign({}, b[i], el);
    });

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