Передать список объектов другому объекту в angularjs - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть два отдельных объекта, которые показаны ниже

Object1 =  [{value:'A/B'},{value:'A/B/C'},{value:'A/F'},{value:'A/'}];

Object2 =[{option:'A/'},{option:'A/B'}];

Теперь мне нужно изменить Object2 , добавив новый атрибут, чтобы Object2 должен был выглядеть следующим образом

 Object2 = [{option:'A/',
            directories:[{value:'A/'},{value:'A/B'},{value:'A/B/C'},{value:'A/F'}]},
           {option:'A/B',
            directories:[{value:'A/B'},{value:'A/B/C'},{value:'A/F'},{value:'A/'}]}];

Необходимые изменения

  • В атрибутах каталогов первое значение должно быть значением параметра

  • Другие значения должныбыть оставшимися значениями, которые должны прийти из Object1

Я попробовал следующий код

angular.forEach(Object2,function(value,key){

 angular.forEach(Object1,function(value,key){

        //I need the code here

  });
});

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Почему вы повторяете дважды?Вы можете использовать только один цикл forEach и функцию стрелки с деструктуризацией:

angular.forEach($scope.Object2, { directories } => directories = $scope.Object1);
0 голосов
/ 20 февраля 2019

Попробуйте следующее

  angular.forEach($scope.Object2,function(value,key){
      value.directories = angular.copy($scope.Object1);
      for (var i=0; i < value.directories.length; i++) {
        if (value.directories[i].value === value.option) {
            var item = value.directories.splice(i,1);  
            value.directories.unshift(item[0]);
            break;
        }
      }
  });

, в основном, после добавления массива каталогов к вашему объекту, вы можете найти индекс объекта, который вы хотите в начале массива удалить, и добавить его обратно в началомассив.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...