Hướng dẫn javascript find duplicates in two arrays of objects - javascript tìm các bản sao trong hai mảng đối tượng

Câu hỏi này có thể quá giống với câu hỏi này tôi đã hỏi vài giờ trước, nhưng vấn đề tôi đang gặp phải thực sự phức tạp hơn tôi nghĩ ban đầu. Tôi đã không nhận thức được thực tế rằng không có hai đối tượng nào có thể được coi là giống nhau trong JavaScript ngay cả khi hai đối tượng có cùng một tập hợp các thuộc tính và giá trị.

Tôi có hai mảng các đối tượng như thế này trong JavaScript.

var from = [
    {city: "seoul", country: "korea"},
    {city: "tokyo", country: "japan"},
    {city: "beijing", country: "china"},
    {city: "new york", country: "usa"}
];
var to = [
    {city: "seoul", country: "korea"},
    {city: "tokyo", country: "japan"},
    {city: "toronto", country: "canada"}
];

Điều tôi muốn làm là kiểm tra xem bất kỳ đối tượng nào trong mảng "từ" "đã ở trong mảng" đến "và đẩy đối tượng vào mảng" đến "chỉ khi nó không nằm trong mảng" đến "và Tôi chỉ muốn thêm một đối tượng từ mảng "từ" "đến mảng" đến "ngay cả khi có các đối tượng khác trong mảng" từ "không có trong mảng" đến ". Nói cách khác, tôi muốn thoát ra khỏi một vòng lặp ngay khi một đối tượng được đẩy đến mảng "đến".

Cuối cùng, tôi muốn mảng "to" trông như thế này.

var target = {
    {city: "seoul", country: "korea"},
    {city: "tokyo", country: "japan"},
    {city: "toronto", country: "canada"},
    {city: "beijing", country: "china"}
};

Đây là một chức năng mà tôi đã đưa ra để đạt được hiệu ứng này.

function ruthere [source, target] {
    for [var i = 0; i < target.length; i++] {
        for [var j = 0; j < source.length; j++] {
            if [target[i].city == source[j].city] {
                console.log["Already there"];
            } else {
                target.push[source[j]];
                i = target.length-1;
                break;
            }
        }
    }
}

Điều này là theo như tôi đã đạt được kết quả mà tôi muốn, nhưng điều này vẫn không làm những gì tôi muốn.

*Chỉnh sửa: Tôi chỉ cần kiểm tra xem giá trị của thuộc tính tên của đối tượng có giống nhau không. Giá trị của tài sản quốc gia không phải giống nhau.

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]

Giải pháp trên tìm thấy và trả về các phần tử trùng lặp bằng phương thức has []. Điều này hoạt động hiệu quả hơn so với phương thức trước vì mỗi giá trị trong tập hợp phải là duy nhất.

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

Trong JavaScript, một đối tượng bao gồm các cặp giá trị khóa trong đó các khóa tương tự như các chỉ mục trong một mảng và là duy nhất. Nếu một người cố gắng thêm một khóa trùng lặp với một giá trị khác, thì giá trị trước đó cho khóa đó bị ghi đè bởi giá trị mới. Chúng tôi sử dụng khái niệm này để so sánh và tìm các bản sao.

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 '];
            }
        }

Điều này có thể được sử dụng khi bạn lo ngại những yếu tố chính xác có bản sao

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

Trong JavaScript, một số chức năng của một số người Viking kiểm tra một điều kiện trên tất cả các phần tử của một mảng và trả về đúng nếu bất kỳ phần tử mảng nào thỏa mãn điều kiện đó.

Trong hàm gọi lại đối số, chúng tôi có được phần tử mảng hiện tại là đối số đầu tiên và chỉ mục của phần tử hiện tại là đối số thứ hai.

Sau đó, chúng ta có thể so sánh chỉ số phần tử hiện tại với chỉ mục của phần tử đầu tiên với cùng một giá trị. Nếu cả hai chỉ số đều giống nhau, điều đó ngụ ý rằng không có yếu tố trùng lặp.

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 tìm thấy các bản sao trong hai mả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.

Làm thế nào để bạn tìm thấy các bản sao trong mảng các đối tượng?

Tìm bản sao trong một mảng bằng JavaScript..
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 ..

Làm thế nào để bạn so sánh hai mảng của các đối tượng và loại bỏ các bản sao?

Làm thế nào để bạn so sánh hai mảng của các đối tượng và loại bỏ các bản sao ?..
mảng1 = mảng1.bộ lọc [hàm [val] {.
trả về mảng2.indexof [val] == -1 ;.
// Hoặc, với sự sẵn có của ES6:.
mảng1 = mảng1.bộ lọc [val =>! mảng2. Bao gồm [val]] ;.

Làm thế nào để bạn so sánh hai mảng của các đối tượng?

Để có được sự khác biệt giữa hai mảng của các đối tượng: sử dụng phương thức Filter [] để lặp lại trong mảng thứ nhất. Hãy kiểm tra xem mỗi đối tượng không được chứa trong mảng thứ hai. Bước 1 và 2 cho mảng thứ hai.Use the filter[] method to iterate over the first array. Check if each object is not contained in the second array. Repeat steps 1 and 2 for the second array.

Bài Viết Liên Quan

Chủ Đề