기본 콘텐츠로 건너뛰기

[javascript] 두 개의 배열 비교하기, 추가, 삭제

배열 두개 비교해서 배열값 추가, 삭제


script 부분

const inf = ref({
  arr1: [1, 2, 3, 4, 5],
  arr2: [1, 2, 3, 4, 5],
  val: ["ㄱ", "ㄴ", "ㄷ", "ㄹ", "ㅁ"]
})

// arr2에서 특정 값 제거. [1, 2, 4, 5]
inf.value.arr2.splice(2, 1);

// arr2에서 배열 값이 제거되어서 arr1이 더 많을 때
if(inf.value.arr1.length > inf.value.arr2.length) {
  // arr1과 비교해서 없는 값의 index를 찾고, 대응하는 val에서 값 제거하기
  inf.value.arr1.some((ele, idx) => {
    // arr1에서 arr2에 없는 값 찾기 = false 인거
    if(!inf.value.arr2.includes(ele)) {
      // arr2에 없는 arr1의 값의 index를 이용해 val의 값 제거하기
      inf.value.val.splice(idx, 1);
      console.log(inf.value.val);// val에서 대응하는 값 제거됨. ["ㄱ", "ㄴ", "ㄹ", "ㅁ"]
    }
  })
}

//
const imf = ref({
  ar1: [1, 2, 3, 9],
  ar2: [1, 2, 3, 9],
  va: ["ㄱ", "ㄴ", "ㄷ", "ㅈ"]
})

// ar2에 특정 값 추가. [1, 2, 3, 7, 9]
imf.value.ar2.splice(3, 0, 7);

// ar2에 배열 값이 추가되어서 ar2가 더 많을 때
if(imf.value.ar2.length > imf.value.ar1.length) {
  // ar2와 비교해서 없는 값의 index를 찾고, 대응하는 va에 값 추가하기
  imf.value.ar2.some((ele, idx) => {
    // ar2에서 ar1에 없는 값 찾기 = false 인거
    if(!imf.value.ar1.includes(ele)) {
      // ar1에 없는 ar2의 값의 index를 이용해 va 값 추가하기
      imf.value.va.splice(idx, 0, "ㅅ");
      console.log(imf.value.va);// va에서 대응하는 값 추가됨. ["ㄱ", "ㄴ", "ㄷ", "ㅅ", "ㅈ"]
    }
  })
}

여러 날짜를 관리할 때 some()과 includes()를 사용하여 if ~ else 등으로 적용하면 유용할듯


끝.