중복없이 유일한 값들만 있는 배열을 반환하라.
uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]) ---> [1, 3, 2, 5, 4]
uniteUnique([1, 2, 3], [5, 2, 1]) ---> [1, 2, 3, 5]
uniteUnique([1, 2, 3], [5, 2, 1, 4], [2, 1], [6, 7, 8]) ---> [1, 2, 3, 5, 4, 6, 7, 8]
function uniteUnique(arr, ...otherArr) {
let result = [...arr];
for (let i = 0; i < otherArr.length; i++) {
for (let j = 0; j < otherArr[i].length; j++) {
if (!result.includes(otherArr[i][j])) {
result.push(otherArr[i][j]);
}
}
}
return result;
}
변수 result를 선언한다. 2중 for문을 이용해서 otherArr에 있는 배열들을 각각 탐색하고, 각각의 값들을 탐색한다. 탐색할 때 includes
메소드를 이용해서 result와 비교하고 값이 없으면 result에 값을 푸시한다.
function uniteUnique(arr, ...otherArr) {
let result = [...arr];
let [first, ...rest] = otherArr;
let sumArr = first;
for (let i = 0; i < rest.length; i++) {
sumArr = [...sumArr, ...rest[i]];
}
for (let i = 0; i < sumArr.length; i++) {
if (!result.includes(sumArr[i])){
result.push(sumArr[i]);
}
}
return result;
}
이 방법은 2중 for문을 사용하지 않고 할 수 있는 해결할 수 있는 방법을 생각하면서 해결한 방법이다. otherArr
에는 하나 이상의 배열이 있다. otherArr
에 있는 배열들을 하나로 합치는걸 생각했다. 변수 sumArr
를 선언하고 sumArr
를 하나의 배열로 만들기 위해 for문을 이용했다. for문을 한번 더 사용해서 첫 번째와 같은 형식으로 중복되는 숫자를 제외하고 result에 중복되지 않는 숫자만 푸시했다.