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

时间:2018-05-14 18:16:49

标签: javascript arrays angularjs object

我想合并两个对象数组。它们基本上有不同的键,但我想将第二个数组的键与第一个数组的键合并。我如何实现这一目标?

  $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来实现相同的目标吗?任何帮助是极大的赞赏。

2 个答案:

答案 0 :(得分:3)

您可以使用模运算符$scope.links % $scope.colors进入新数组,以保持在Object.assign的范围内并使用var merged = $scope.links.map(function(link, index) { return Object.assign({}, link, $scope.colors[index % $scope.colors.length]); }); 合并对象一旦你得到它们,就像这样:

def colm(p, q, chunk_len=10):
    x = np.arange(0,5 * chunk_len)
    x = pd.DataFrame({'x':x})

    # just random uniform distributions in differnt range

    ys = [np.random.uniform(p_, q_, chunk_len) for p_, q_ in zip(p, q)]

    y = np.concatenate(ys)

    return x, pd.Series(y)

答案 1 :(得分:1)

你能绕过两个阵列吗?

$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]));
}