Избегайте того же объекта в существующей угловой модели
Пытаясь объединить два массива с некоторыми одинаковыми вхождениями в два массива, вот что я сделал
var json_dest = [
{
"legID":"12121",
"message":212112
},
{
"legID":"12122",
"message":212112
}
];
var json_src = [
{
"legID":"12121",
"message":212100
},
{
"legID":"12123",
"message":212112
}
];
console.log(angular.merge(json_dest, json_src));
выход:
[
{
"legID":"12121",
"message":212100
},
{
"legID":"12123",
"message":212112
}
]
это объединило дубликаты
но мне не хватает другого legID "12123"
Мне нужно знать, как это можно сделать эффективно?
а также почему это происходит?
2 ответа
angular.merge
используется не для объединения массивов, а для глубокого расширения целевого объекта перечислимыми свойствами исходного объекта:
Глубоко расширяет целевой объект dst, копируя собственные перечисляемые свойства из объектов src в dst. Вы можете указать несколько объектов src. Если вы хотите сохранить исходные объекты, вы можете сделать это, передав пустой объект в качестве цели:
var object = angular.merge({}, object1, object2)
Источник
Если вы просто хотите объединить два массива в один, вам не нужен угловой API для этого. Просто используйте concat:
json_dest = json_dest.concat(json_src);
Если вы хотите удалить дубликаты определенным свойством, например, legID в вашем случае, вы можете сделать это после объединения массивов. Есть много ресурсов о том, как это сделать. Смотрите, например, этот вопрос: Удалить дубликаты из массива объектов в JavaScript
Синтаксис для слияния
var object = angular.merge({}, obj1, obj2);
это показывает только второй элемент
попробуйте использовать
console.log(angular.merge(dst, src1, src2));