Hướng dẫn how do you check if an array of objects has duplicate values in javascript? - làm cách nào để kiểm tra xem một mảng các đối tượng có các giá trị trùng lặp trong javascript hay không?

Để biết liệu mảng đơn giản có trùng lặp không, chúng ta có thể so sánh các chỉ mục đầu tiên và cuối cùng của cùng một giá trị:

Chức năng:

var hasDupsSimple = function(array) {

    return array.some(function(value) {                            // .some will break as soon as duplicate found (no need to itterate over all array)
       return array.indexOf(value) !== array.lastIndexOf(value);   // comparing first and last indexes of the same value
    })
}

Tests:

hasDupsSimple([1,2,3,4,2,7])
// => true

hasDupsSimple([1,2,3,4,8,7])
// => false

hasDupsSimple([1,"hello",3,"bye","hello",7])
// => true

Đối với một mảng các đối tượng, chúng ta cần chuyển đổi các giá trị đối tượng thành một mảng đơn giản trước:

Chuyển đổi mảng các đối tượng thành mảng đơn giản với

hasDupsSimple([1,2,3,4,2,7])
// => true

hasDupsSimple([1,2,3,4,8,7])
// => false

hasDupsSimple([1,"hello",3,"bye","hello",7])
// => true
0:

var hasDupsObjects = function(array) {

  return array.map(function(value) {
    return value.suit + value.rank

  }).some(function(value, index, array) { 
       return array.indexOf(value) !== array.lastIndexOf(value);  
     })
}

Tests:

var cardHand = [
  { "suit":"spades", "rank":"ten" },
  { "suit":"diamonds", "rank":"ace" },
  { "suit":"hearts", "rank":"ten" },
  { "suit":"clubs", "rank":"two" },
  { "suit":"spades", "rank":"three" },
]

hasDupsObjects(cardHand);
// => false

var cardHand2 = [
  { "suit":"spades", "rank":"ten" },
  { "suit":"diamonds", "rank":"ace" },
  { "suit":"hearts", "rank":"ten" },
  { "suit":"clubs", "rank":"two" },
  { "suit":"spades", "rank":"ten" },
]

hasDupsObjects(cardHand2);
// => true

Trong bài viết này, chúng ta sẽ xem xét các phương pháp khác nhau để tìm bản sao trong một mảng. Một số phương pháp này chỉ đếm số lượng các yếu tố trùng lặp trong khi các phương pháp khác cũng cho chúng ta biết yếu tố nào đang lặp lại và một số làm cả hai. Theo đó, bạn có thể chọn cái tốt nhất cho trường hợp sử dụng của bạn.

Mục lục

  • Sử dụng phương thức indexof ()
  • Sử dụng phương thức HAVE ()
  • Sử dụng một cặp đối tượng & giá trị khóa
  • Sử dụng chức năng "Một số"
  • Sử dụng lặp lại

Sử dụng phương thức indexof ()

Sử dụng phương thức HAVE ()

Sử dụng một cặp đối tượng & giá trị khóa

const arry = [1, 2, 1, 3, 4, 3, 5];

const toFindDuplicates = arry => arry.filter((item, index) => arr.indexOf(item) !== index)
const duplicateElementa = tofindDuplicates(arry);
console.log(duplicateElements);

// Output: [1, 3]

Sử dụng phương thức HAVE ()

Sử dụng một cặp đối tượng & giá trị khóa

function toFindDuplicates(arry) {
    const uniqueElements = new Set(arry);
    const filteredElements = arry.filter(item => {
        if (uniqueElements.has(item)) {
            uniqueElements.delete(item);
        } else {
            return item;
        }
    });

    return [...new Set(uniqueElements)]
}

const arry = [1, 2, 1, 3, 4, 3, 5];
const duplicateElements = toFindDuplicates(arry);
console.log(duplicateElements);

// Output: [1, 3]

Sử dụng chức năng "Một số"

Sử dụng lặp lại

Trong phương pháp này, những gì chúng tôi làm là chúng tôi so sánh chỉ số của tất cả các mục của một mảng với chỉ mục của lần đầu tiên số đó xảy ra. Nếu chúng không phù hợp, điều đó ngụ ý rằng phần tử là một bản sao. Tất cả các phần tử như vậy được trả về trong một mảng riêng biệt bằng phương thức Filter ().

toFindDuplicates();

function toFindDuplicates() {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let toMap = {};
    let resultToReturn = false;
    for (let i = 0; i < arry.length; i++) {

        if (toMap[arry[i]]) {
            resultToReturn = true;
            // terminate the loop
            break;
        }

        toMap[arr[i]] = true;
    }

    if (resultToReturn) {
        console.log('Duplicate elements exist'
            ');
        }
        else {
            console.log('Duplicates don'
                t exist ');
            }
        }

Chúng ta hãy xem xét việc thực hiện điều này bằng cách sử dụng JavaScript

Sử dụng chức năng "Một số"

Sử dụng lặp lại

Trong phương pháp này, những gì chúng tôi làm là chúng tôi so sánh chỉ số của tất cả các mục của một mảng với chỉ mục của lần đầu tiên số đó xảy ra. Nếu chúng không phù hợp, điều đó ngụ ý rằng phần tử là một bản sao. Tất cả các phần tử như vậy được trả về trong một mảng riêng biệt bằng phương thức Filter ().

Chúng ta hãy xem xét việc thực hiện điều này bằng cách sử dụng JavaScript

toFindDuplicates();

function toFindDuplicates() {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let resultToReturn = false;
    // call some function with callback function as argument
    resultToReturn = arry.some((element, index) => {
        return arry.indexOf(element) !== index
    });
    if (resultToReturn) {
        console.log('Duplicate elements exist'
            ');
        }
        else {
            console.log('Duplicates don'
                t exist ');
            }
        }

Sử dụng lặp lại

Trong phương pháp này, chúng tôi so sánh từng phần tử của một mảng với tất cả các phần tử khác của mảng để kiểm tra xem hai phần tử có giá trị có giống nhau bằng cách sử dụng lồng nhau cho vòng lặp không.

toFindDuplicates();

function toFindDuplicates(element, index) {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let resultToReturn = false;
    for (let i = 0; i < arry.length; i++) { // nested for loop
        for (let j = 0; j < arry.length; j++) {
            // prevents the element from comparing with itself
            if (i !== j) {
                // check if elements' values are equal
                if (arry[i] === arry[j]) {
                    // duplicate element present                                
                    resultToReturn = true;
                    // terminate inner loop
                    break;
                }
            }
        }
        // terminate outer loop                                                                      
        if (resultToReturn) {
            break;
        }
    }
    f(resultToReturn) {
            console.log('Duplicate elements exist'
                ');
            }
            else {
                console.log('Duplicates don'
                    t exist ');
                }
            }

Làm thế nào để bạn kiểm tra các bản sao trong mảng các đối tượng trong JS?

Sử dụng phương thức indexof () trong phương thức này, những gì chúng tôi làm là chúng tôi so sánh chỉ số của tất cả các mục của một mảng với chỉ mục của lần đầu tiên số đó xảy ra.Nếu chúng không phù hợp, điều đó ngụ ý rằng phần tử là một bản sao.Tất cả các phần tử như vậy được trả về trong một mảng riêng biệt bằng phương thức Filter (). In this method, what we do is that we compare the index of all the items of an array with the index of the first time that number occurs. If they don't match, that implies that the element is a duplicate. All such elements are returned in a separate array using the filter() method.

Làm thế nào để bạn kiểm tra xem có các phần tử trùng lặp trong một mảng không?

Các yếu tố trùng lặp có thể được tìm thấy bằng hai vòng.Vòng ngoài sẽ lặp qua mảng từ 0 đến chiều dài của mảng.Vòng lặp bên ngoài sẽ chọn một phần tử.Vòng bên trong sẽ được sử dụng để so sánh phần tử đã chọn với phần còn lại của các phần tử của mảng.using two loops. The outer loop will iterate through the array from 0 to length of the array. The outer loop will select an element. The inner loop will be used to compare the selected element with the rest of the elements of the array.

Mảng có thể có giá trị trùng lặp không?

Cách tiêu chuẩn để tìm các phần tử trùng lặp từ một mảng là bằng cách sử dụng cấu trúc dữ liệu Hashset.Nếu bạn nhớ, đặt kiểu dữ liệu trừu tượng không cho phép trùng lặp.Bạn có thể tận dụng thuộc tính này để lọc các yếu tố trùng lặp.