Добавьте новые свойства в массив объектов из другого массива различной длины, чтобы после завершения повторения массива он начинался сначала - PullRequest
0 голосов
/ 14 мая 2018

Я хотел бы объединить два массива объектов. Они в основном имеют разные ключи, но я хотел бы объединить ключи второго массива с ключами первого. Как мне этого добиться?

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

Могу ли я использовать lower или forEach для достижения того же самого? Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Вы можете map $scope.links в новый массив, используя оператор по модулю %, чтобы оставаться в пределах $scope.colors и использовать Object.assign для объединения объектов, как только вы их получили, например:

var merged = $scope.links.map(function(link, index) {
    return Object.assign({}, link, $scope.colors[index % $scope.colors.length]);
});
0 голосов
/ 14 мая 2018

Можете ли вы просто зациклить оба массива?

$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]));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...