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变化的。注意!这个问题似乎有一个答案。抬起头来!这个问题似乎有一个答案。