2015-03-04 2 views
0

Я пытаюсь поместить содержимое массива в другое. У меня есть этот JSON ($ scopeProducts) ...Проблема при копировании одного массива в другой

{ 
"ID": "...", 
"Groups": [ 
    { 
     "Products": [] 
    } 
{ 
     "Other": [] 
    } 
] 
} 

И я пытаюсь добавить следующий JSON в массив 'Продукты' ($ scope.selectedProducts) ...

[ 
{ 
    "ProductCode": "Code1", 
}, 
{ 
    "ProductCode": "Code1", 
}, 
] 

и В конечном итоге я получаю это ...

{ 
"ID": "...", 
"Groups": [ 
    { 
     "Products": 
    [ 
     [ 
      { 
       "ProductCode": "Code1", 
      }, 
      { 
       "ProductCode": "Code1", 
      }, 
     ] 
    ] 
    } 
{ 
     "Other": [] 
    } 
] 
} 

... что неправильно (проверьте двойную [[в массиве продуктов). Я использую яваскрипт нажимной функцию ...

$scopeProducts.Groups[0].Products.push($scope.selectedProducts); 

Может кто-нибудь сказать мне, как правильно это сделать, не создавая двойной массив [[]]? Большое спасибо

ответ

2

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

Если вы хотите добавить его (за исключением Угловая имея некоторой функции полезности):

$scopeProducts.Groups[0].Products.push.apply($scopeProducts.Groups[0].Products, $scope.selectedProducts); 

Это немного сложнее: он использует Function#apply вызвать push с несколькими аргументами, по одному для каждой записи в $scope.selectedProducts. Это связано с тем, что в массивах JavaScript нет собственного метода append; ближе всего они concat, что создает новый массив. Но вышеприведенные работы дополняют функциональность.

+0

Thats great! Это сработало и спасибо за объяснение. –

Смежные вопросы