Làm thế nào để biết một mảng có 2 hay nhiều phần tử giống nhau? [bản sao]

Jan 28 2021

Tôi có một mảng và tôi muốn kiểm tra xem có bất kỳ phần tử nào trong mảng bị trùng lặp hay không.

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

Trả lời

2 jfriend00 Jan 28 2021 at 04:14

Một cách đơn giản là sử dụng a 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

Nếu mảng chỉ được lấp đầy bởi các chuỗi, bạn có thể sử dụng một tập hợp. Tạo một tập hợp từ mảng, sau đó so sánh độ dài mảng với kích thước đã đặt. Nếu chúng giống nhau, thì chúng là duy nhất. Nếu chúng khác nhau, có một bản sao. Đây là một ví dụ đơn giản.

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

Đây là một cách đơn giản để kiểm tra xem một mảng có bao gồm các bản sao của một mục cụ thể hay không.

Sử dụng: 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;
}