Javascript 从另一个具有不同长度的数组向对象数组添加新属性,因此,一旦完成了对数组的迭代,它将再次从第一个数组开始

Javascript 从另一个具有不同长度的数组向对象数组添加新属性,因此,一旦完成了对数组的迭代,它将再次从第一个数组开始,javascript,arrays,angularjs,object,Javascript,Arrays,Angularjs,Object,我想合并两个对象数组。它们基本上有不同的键,但我想将第二个数组的键与第一个数组的键合并。我如何做到这一点 $scope.links = [ { name: 'JRD', status: 'active' }, { name: 'JRM', status: 'active' }, { name: 'JRH', status: 'active' } ]; $scope

我想合并两个对象数组。它们基本上有不同的键,但我想将第二个数组的键与第一个数组的键合并。我如何做到这一点

  $scope.links = [
    {
      name: 'JRD',
      status: 'active'
    },
    {
      name: 'JRM',
      status: 'active'
    },
    {
      name: 'JRH',
      status: 'active'
    }
  ];

  $scope.colors = [
        {
            color: 'red',
            value: '#f00'
        },
        {
            color: 'green',
            value: '#0f0'
        },
        {
            color: 'blue',
            value: '#00f'
        },
        {
            color: 'cyan',
            value: '#0ff'
        },
        {
            color: 'magenta',
            value: '#f0f'
        },
        {
            color: 'yellow',
            value: '#ff0'
        },
    ];
我想将这两者结合起来,以实现如下所示的合并阵列

[
    {
      name: 'JRD',
      status: 'active',
      color: 'red',
      value: '#f00'
    },
    {
      name: 'JRM',
      status: 'active',
      color: 'green',
      value: '#0f0'
    },
    {
      name: 'JRH',
      status: 'active',
      color: 'blue',
      value: '#00f'
    }
  ];

我可以使用reduce或forEach实现同样的功能吗?非常感谢您的帮助

您能在两个阵列上循环吗

$scope.merged = [];
for(var x = 0; x < $scope.links.length && x < $scope.colors.length; x++){
    $scope.merged.push(Object.assign({}, $scope.links[x], $scope.colors[x]));
}
$scope.merged=[];
对于(变量x=0;x<$scope.links.length&&x<$scope.colors.length;x++){
$scope.merged.push(Object.assign({},$scope.links[x],$scope.colors[x]);
}

您能在两个阵列上循环吗

$scope.merged = [];
for(var x = 0; x < $scope.links.length && x < $scope.colors.length; x++){
    $scope.merged.push(Object.assign({}, $scope.links[x], $scope.colors[x]));
}
$scope.merged=[];
对于(变量x=0;x<$scope.links.length&&x<$scope.colors.length;x++){
$scope.merged.push(Object.assign({},$scope.links[x],$scope.colors[x]);
}

您可以
映射
$scope。使用模运算符
%
将链接
链接到新数组中,以保持在
$scope.colors
的范围内,并使用
对象。获得对象后,分配
以合并对象,如下所示:

var merged = $scope.links.map(function(link, index) {
    return Object.assign({}, link, $scope.colors[index % $scope.colors.length]);
});

您可以
映射
$scope。使用模运算符
%
将链接链接到新数组中,以保持在
$scope.colors
的范围内,并使用
对象。获得对象后分配
以合并对象,如下所示:

var merged = $scope.links.map(function(link, index) {
    return Object.assign({}, link, $scope.colors[index % $scope.colors.length]);
});

什么是合并逻辑?您如何知道要合并哪些项目?如何处理两个数组长度不相同的情况?这就像将这些元素连接到主数组中一样。是的,但是如何处理?这些数组长度不同,可以包含任意数量的项。如何决定合并哪些项,不合并哪些项?是的,因此如果颜色数组完全迭代,它应该从第一个开始重复。因此,如果将黄色添加到第一个数组中,然后再次从红色开始。我会将其添加到原始问题中,而不是让人们在注释中搜索合并逻辑是什么?您如何知道要合并哪些项目?如何处理两个数组长度不相同的情况?这就像将这些元素连接到主数组中一样。是的,但是如何处理?这些数组长度不同,可以包含任意数量的项。如何决定合并哪些项,不合并哪些项?是的,因此如果颜色数组完全迭代,它应该从第一个开始重复。因此,如果将黄色添加到第一个数组中,则再次从红色开始。我会将其添加到原始问题中,而不是让人们搜索注释。我认为在@MathewBerg回答时,澄清不同数组长度行为的OP注释并不存在。结果在SO中很常见:分散的选票,没有明显的区别,混乱的评论,就像每个人都在谈论一样——谁在回答谁?问问题比回答问题难。@radarbob是的。OP应该从一开始就澄清这一点。我会通知@mathewBerg更改。我认为在@mathewBerg回答问题时,澄清不同数组长度行为的OP评论并不存在。结果在SO中很常见:分散的选票,没有明显的区别,混乱的评论,就像每个人都在谈论一样——谁在回答谁?问问题比回答问题难。@radarbob是的。OP应该从一开始就澄清这一点。我会通知@mathewBerg变化的。注意!这个问题似乎有一个答案。抬起头来!这个问题似乎有一个答案。