배열에 동일한 요소가 2 개 이상 있는지 확인하는 방법은 무엇입니까? [복제]

Jan 28 2021

배열이 있고 배열의 요소가 중복되었는지 확인하고 싶습니다.

["item1", "item2", "item3"] //false All the items are unique
["item1", "item2", "item1"] //true There are 2 of the same items.

답변

2 jfriend00 Jan 28 2021 at 04:14

간단한 방법은 Set.

function doesContainDups(array) {
   let set = new Set(array);
   return set.size !== array.length;
}

console.log(doesContainDups(["item1", "item2", "item3"]));
console.log(doesContainDups(["item1", "item2", "item1"]));

1 BenBradshaw Jan 28 2021 at 04:18

배열이 문자열로만 채워진 경우 집합을 사용할 수 있습니다. 배열에서 집합을 만든 다음 배열 길이를 집합 크기와 비교합니다. 동일하면 고유합니다. 다른 경우 중복이 있습니다. 다음은 간단한 예입니다.

const arr1 = ["item1", "item2", "item3"];
const arr2 = ["item1", "item2", "item1"];
const setFromArr1 = new Set(arr1);
const setFromArr2 = new Set(arr2);
const arr1AllUnique = arr1.length === setFromArr1.size;
const arr2AllUnique = arr2.length === setFromArr2.size;
console.log(arr1AllUnique);
console.log(arr2AllUnique);

Haytam Jan 28 2021 at 04:17

배열에 특정 항목의 중복이 포함되어 있는지 테스트하는 간단한 방법이 있습니다.

용법: containsDuplicateOf(yourArray, "item1")

function containsDuplicateOf(array, item) {
   for (let i = 0; i < array.length; i++) {
       const current = array[i];
       let count = 0;
       for (let j = 0; j < array.length; j++) {
           if (array[j] === current)
               count++;
               
           if (count > 1) return true;
       }
   }

   return false;
}