티스토리 뷰

Object in Array concat 하기 

DATA

let array1 = [
    { id: "dream", date: "2021-01-24" },
    { id: "love", date: "2020-09-22" }
];

let array2 = [
    { id: "dream", name: "peter" },
    { id: "hope", name: "rosy" }
];

1. 일반적인 Data concat

(1) concat 함수 사용  

let result = array1.concat(array2);

 

(2) 결과

// 0: {id: 'dream', date: '2021-01-24'}
// 1: {id: 'love', date: '2020-09-22'}
// 2: {id: 'dream', name: 'peter'}
// 3: {id: 'hope', name: 'rosy'}

 


 

2. 서로 다른 array -> id를 기준으로 잡아서 concat 해보기

(1) Map을 사용하여 data 추가해보기 

const map = new Map();
array1.forEach(item => map.set(item.id, item));
array2.forEach(item => map.set(item.id, {...map.get(item.id), ...item}));
const mergedArr = Array.from(map.values());

- {...map.get(item.id), ...item} => 기존에 있던  데이터 추가 

- Array.from(map.values) map에 있는 data 추가 

 

(2) 결과 

 

// 0: {id: 'dream', date: '2021-01-24', name: 'peter'}
// 1: {id: 'love', date: '2020-09-22'}
// 2: {id: 'hope', name: 'rosy'}

 

 


let array1 = [
    { id: "dream", date: "2021-01-24" },
    { id: "love", date: "2020-09-22" },
    { id : "melong", date : "2020-09-27"}
];

let array2 = [
    { id: "dream", date: "2021-01-24" },
    { id: "love", name: "2020-09-23" },
    { id : "melong2", date : "2020-09-27"}
];

 

 

array1.filter(o1 => array2.some(o2 => o1.id === o2.id && o1.date === o2.date));
//{id: 'dream', date: '2021-01-24'}

 

 

 


Object in Array 비교하기

1. Array 비교하기

let A = [1,2,3,4,5];
let B = [3,4,5,6];

(1) 

let result = A.filter(item => !B.includes(item))
console.log(result); // [1, 2]

 

 

(2) 

let result = B.filter(item => !A.includes(item))
console.log(result); // 6

 

 

 

(3) 

let result = B.filter(item => A.includes(item))
console.log(result); //  [3, 4, 5]

 

(4) 

let result = [...new Set([...A, ...B])];
console.log(result);

 

 

2. Array in Object 비교 

 

 

some ?

1. 교집합 - intersection 

var array1 = [{ "a": "1", "b": "2" }, 
{ "a": "3", "b": "4" }, 
{ "c": "5", "d": "6" }, ];


var array2 = [{ "a": "1", "b": "2" }, 
{ "a": "7", "b": "8" }, 
{ "c": "5", "d": "6" }, ];

 

 

let res = array1.filter(n => array2.some(n2 => n.a == n2.a));

//0: {a: "1", b: "2"}
//1: {c: "5", d: "6"}

 

 

 

(출처)

1. https://stackoverflow.com/questions/46849286/merge-two-array-of-objects-based-on-a-key

2. 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함