본문 바로가기

JavaScript

2차원 배열의 중복값 제거

728x90

다차원배열에서 indexOf로 값 있는지 유무 확인하고 없을 경우에만 배열에 추가하려고 했는데 indexOf 값이 다 -1이 나왔다.

배열의 경우 변수에 담을때 해당 변수는 해당 배열의 값이 아니라, 레퍼런스를 참조하게 됩니다.
이말은, const arr = ['a', [1,2]] 라면, arr[1]에는 배열 [1,2]의 참조 값이 들어가 있다는 거죠.
그렇기 때문에 arr.indexOf([1,2])를 하게 되면, 새로운 원소 1과 2를 가진 새로운 [1,2] 배열이 만들어진것이기 때문에 참조값이 달라서 -1이 나오게 되는 것입니다.

이러한 이유라고 한다.

//최종 변경 코드
let locations = [
  [126, 34],
  [126, 34],
  [126, 35],
  [127, 34],
];

function removeDup(arr) {
  return [...new Set(arr.join("|").split("|"))]
    .map((v) => v.split(","))
    .map((v) => v.map((a) => +a));
}

let uniqueArr = removeDup(locations);
console.log(uniqueArr);

이러한 방법을 이용해서 중복된 값을 제거할 수 있다고 한다....

[출처]

https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=298276

728x90

'JavaScript' 카테고리의 다른 글

array 숫자 sort  (0) 2023.11.26
전개 구문(Spread syntax; ...)  (0) 2023.11.26
TypeError: Cannot read properties of undefined (reading '0')  (0) 2023.11.26
reduce() 함수  (0) 2023.10.26
map() 함수  (1) 2023.10.26