1113 Я понимаю, что вы уже приняли ответ, но я решил, что смогу предложить альтернативу, лучше или хуже.
var jsonData1 = [{firstName: "Sam",age: "10"},{firstName: "John",age: "11"},{firstName: "Jack",age: "12"},{firstName: "Pam",age: "13"},{firstName: "Tom",age: "14"},{firstName: "Mitch",age: "15"}];
var jsonData2 = [{firstName: "Sam",city: "London"},{firstName: "John",city: "New York"},{firstName: "Jack",city: "Paris"},{firstName: "Pam",city: "Moscow"},{firstName: "Roger",city: "Shanghai"},{firstName: "Don",city: "Jakarta"}];
var defaults = {firstName: "", age: "", city: ""};
var data = [ ...jsonData1, ...jsonData2 ];
var names = [ ...new Set(data.map(i=>i.firstName)) ];
var res = names.map(n => data
.reduce((acc, jd) => jd.firstName === n ? {...acc, ...jd} : acc, defaults)
);
console.log(res);
var data
объединяет два массива данных в один, используя синтаксис расширения (литералы массива) ) SUP>.
var names
создает массив уникальных имен, используя Set
.
map()
перебирает список имен, создавая один объединенный объект для каждого. Это объединение выполняется с использованием reduce()
и расширенного синтаксиса (литералы объекта) sup>.
Универсальное цветовое пространство удерживается от использования. Вместо этого попробуйте;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB()
;