개발맛/알고리Thm
자바스크립트 배열 중복 요소 찾기
MINAMIN
2020. 7. 4. 21:26
▶ 문제 :
arr 배열이 있다.
이 때 배열 arr의 요소 중 다른 요소의 일부에 포함되거나 중복되는 경우
true를 리턴해야 하며, 중복되는 요소가 없다면 false를 리턴해야 한다.
▶ 예시 :
1. arr = ['티', '바지', '원피스', '홍차', '티셔츠'] 이면 true를 리턴
( '티' 원소가 '티셔츠' 원소의 일부에 해당되기 때문에 true 리턴 )
2. arr = ['슈퍼', '마트', '슈퍼컴퓨터', '문방구', '하이마트'] 이면 true를 리턴
( '슈퍼' 원소가 '슈퍼컴퓨터' 원소의 일부에 해당되기 때문에 true 리턴 )
( '마트' 원소가 '하이마트' 원소의 일부에 해당되기 때문에 true 리턴 )
3. arr = ['축구', '배구', '농구', '족구'] 이면 false를 리턴
( 하나의 요소가 다른 요소의 일부가 되거나 중복되지 않기 때문에 false 리턴 )
( '구' 라는 글자 하나가 다른 요소의 일부이긴 하지만 "완전한 요소 자체" 가 아니기 때문에 중복으로 치지 않음 )
▶ 해결한 코드 :
var answer = false;
var data = ['슈퍼', '마트', '슈퍼컴퓨터', '문방구', '하이마트', '슈퍼'],
result = [];
function getData(arr) {
for(var i = 0; i < arr.length; i++) {
var value = data[i];
var chk = 0;
for(var j = 0; j < data.length; j++) {
if(data[j].indexOf(value) != -1) chk++;
}
if(chk > 1) {
console.log("'" + value + "'" + "는 다른 요소의 일부이거나 중복된 값입니다.");
result.push(value);
}
}
return result;
}
answer = getData(data).length > 0 ? true : false;
console.log("결과: " + answer);
▶ 결과 :

▶ 다른 방법 :
(찾으면 작성하기...)