Hướng dẫn find same elements in two arrays javascript - tìm các phần tử giống nhau trong hai mảng javascript

Một cách tiếp cận được lập chỉ mục khác có thể xử lý bất kỳ số lượng mảng nào cùng một lúc:

Show
    // Calculate intersection of multiple array or object values.
    function intersect (arrList) {
        var arrLength = Object.keys(arrList).length;
            // (Also accepts regular objects as input)
        var index = {};
        for (var i in arrList) {
            for (var j in arrList[i]) {
                var v = arrList[i][j];
                if (index[v] === undefined) index[v] = 0;
                index[v]++;
            };
        };
        var retv = [];
        for (var i in index) {
            if (index[i] == arrLength) retv.push(i);
        };
        return retv;
    };
    

    Nó chỉ hoạt động cho các giá trị có thể được đánh giá là chuỗi và bạn nên truyền chúng như một mảng như:

    intersect ([arr1, arr2, arr3...]);
    

    ... Nhưng nó trong suốt chấp nhận các đối tượng là tham số hoặc bất kỳ phần tử nào được giao nhau (luôn trả về mảng của các giá trị chung). Ví dụ:

    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    

    EDIT: Tôi chỉ nhận thấy rằng, theo một cách nào đó, hơi lỗi. I just noticed that this is, in a way, slightly buggy.

    Đó là: Tôi đã mã hóa nó nghĩ rằng các mảng đầu vào không thể tự chứa các lần lặp lại (như ví dụ được cung cấp không).

    Nhưng nếu các mảng đầu vào xảy ra có chứa sự lặp lại, điều đó sẽ tạo ra kết quả sai. Ví dụ (sử dụng triển khai dưới đây):

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    

    May mắn thay, điều này rất dễ sửa chữa bằng cách chỉ cần thêm lập chỉ mục cấp hai. Đó là:

    Change:

            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    

    by:

            if (index[v] === undefined) index[v] = {};
            index[v][i] = true; // Mark as present in i input.
    

    ...and:

             if (index[i] == arrLength) retv.push(i);
    

    by:

             if (Object.keys(index[i]).length == arrLength) retv.push(i);
    

    Hoàn thành ví dụ:

    // Calculate intersection of multiple array or object values.
    function intersect (arrList) {
        var arrLength = Object.keys(arrList).length;
            // (Also accepts regular objects as input)
        var index = {};
        for (var i in arrList) {
            for (var j in arrList[i]) {
                var v = arrList[i][j];
                if (index[v] === undefined) index[v] = {};
                index[v][i] = true; // Mark as present in i input.
            };
        };
        var retv = [];
        for (var i in index) {
            if (Object.keys(index[i]).length == arrLength) retv.push(i);
        };
        return retv;
    };
    
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]); // [ '1' ]
    

    Cải thiện bài viết

    Lưu bài viết

    Cho hai mảng chứa các phần tử mảng và tác vụ là kiểm tra xem hai mảng có chứa bất kỳ phần tử phổ biến nào hay không thì nó trả về đúng nếu không trả về sai.

    Examples:

    Input: array1 = ['a', 'b', 'c', 'd', 'e']
           array2 = ['f', 'g', 'c']
    Output: true
    
    Input: array1 = ['x', 'y', 'w', 'z']
           array2 = ['m', 'n', 'k']
    Output: false

    Có nhiều phương pháp để giải quyết vấn đề này trong JavaScript, một số trong số chúng được thảo luận dưới đây.

    Phương pháp 1: Phương pháp tiếp cận lực lượng vũ phu & nbsp; 

    • So sánh từng mục từ mảng thứ nhất với mỗi mục của mảng thứ hai.
    • Vòng lặp qua Array1 và lặp lại nó từ đầu đến cuối.
    • Vòng lặp qua Array2 và lặp lại nó từ đầu đến cuối.
    • So sánh từng và mọi mục từ Array1 với Array2 và nếu nó tìm thấy bất kỳ mục thông thường nào thì hãy trả về true nếu không trả về sai.

    Example:  

    JavaScript

    intersect ([arr1, arr2, arr3...]);
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([arr1, arr2, arr3...]);
    
    5
    intersect ([arr1, arr2, arr3...]);
    
    6
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ([arr1, arr2, arr3...]);
    
    8
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    0
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    2
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    5
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    6
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    8
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    0
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    3
    intersect ([arr1, arr2, arr3...]);
    
    47

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    6
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    7

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    8
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    6
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    0

            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    1
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    2
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    3

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    5
    intersect ([arr1, arr2, arr3...]);
    
    50

            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    1
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    8
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    JavaScript được biết đến nhiều nhất để phát triển trang web nhưng nó cũng được sử dụng trong nhiều môi trường không phải là trình duyệt. Bạn có thể tìm hiểu JavaScript từ cơ sở bằng cách làm theo các ví dụ JavaScript và JavaScript này.

    intersect ([arr1, arr2, arr3...]);
    
    4
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    Cải thiện bài viết

             if (index[i] == arrLength) retv.push(i);
    
    2

    Output:  

    intersect ([arr1, arr2, arr3...]);
    
    0

    Lưu bài viếtO(M * N)

    Cho hai mảng chứa các phần tử mảng và tác vụ là kiểm tra xem hai mảng có chứa bất kỳ phần tử phổ biến nào hay không thì nó trả về đúng nếu không trả về sai. 

    • Có nhiều phương pháp để giải quyết vấn đề này trong JavaScript, một số trong số chúng được thảo luận dưới đây.
    • Phương pháp 1: Phương pháp tiếp cận lực lượng vũ phu & nbsp;
    • So sánh từng mục từ mảng thứ nhất với mỗi mục của mảng thứ hai.
    • Vòng lặp qua Array1 và lặp lại nó từ đầu đến cuối.

    Example:  

    JavaScript

    intersect ([arr1, arr2, arr3...]);
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([arr1, arr2, arr3...]);
    
    5
    intersect ([arr1, arr2, arr3...]);
    
    6
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    2
    intersect ([arr1, arr2, arr3...]);
    
    7
             if (Object.keys(index[i]).length == arrLength) retv.push(i);
    
    0
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    8
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    5
             if (Object.keys(index[i]).length == arrLength) retv.push(i);
    
    6
    intersect ([arr1, arr2, arr3...]);
    
    7
             if (Object.keys(index[i]).length == arrLength) retv.push(i);
    
    8
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    6
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    3
    intersect ([arr1, arr2, arr3...]);
    
    47

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
    // Calculate intersection of multiple array or object values.
    function intersect (arrList) {
        var arrLength = Object.keys(arrList).length;
            // (Also accepts regular objects as input)
        var index = {};
        for (var i in arrList) {
            for (var j in arrList[i]) {
                var v = arrList[i][j];
                if (index[v] === undefined) index[v] = {};
                index[v][i] = true; // Mark as present in i input.
            };
        };
        var retv = [];
        for (var i in index) {
            if (Object.keys(index[i]).length == arrLength) retv.push(i);
        };
        return retv;
    };
    
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]); // [ '1' ]
    
    6

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    5
    intersect ([arr1, arr2, arr3...]);
    
    50

    JavaScript được biết đến nhiều nhất để phát triển trang web nhưng nó cũng được sử dụng trong nhiều môi trường không phải là trình duyệt. Bạn có thể tìm hiểu JavaScript từ cơ sở bằng cách làm theo các ví dụ JavaScript và JavaScript này.

            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    4
    Input: array1 = ['a', 'b', 'c', 'd', 'e']
           array2 = ['f', 'g', 'c']
    Output: true
    
    Input: array1 = ['x', 'y', 'w', 'z']
           array2 = ['m', 'n', 'k']
    Output: false
    4

            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    4
    Input: array1 = ['a', 'b', 'c', 'd', 'e']
           array2 = ['f', 'g', 'c']
    Output: true
    
    Input: array1 = ['x', 'y', 'w', 'z']
           array2 = ['m', 'n', 'k']
    Output: false
    6
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    6
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    7

            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    1
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    8
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    8
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    6
    intersect ([arr1, arr2, arr3...]);
    
    05

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    8
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    2
    intersect ([arr1, arr2, arr3...]);
    
    08

            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    1
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    5
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    6
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    7

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    8
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    5
            if (index[v] === undefined) index[v] = {};
            index[v][i] = true; // Mark as present in i input.
    
    6
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    7

    intersect ([arr1, arr2, arr3...]);
    
    4
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([arr1, arr2, arr3...]);
    
    24

    intersect ([arr1, arr2, arr3...]);
    
    25

    Output:  

    intersect ([arr1, arr2, arr3...]);
    
    0

    Độ phức tạp về thời gian: O (M + N)O(M + N)

    Phương pháp 3: & NBSP; 

    • Sử dụng hàm ES6 sẵn có một số () để lặp qua từng phần tử của mảng đầu tiên và để kiểm tra mảng.
    • Sử dụng hàm sẵn bao gồm () với mảng thứ hai để kiểm tra xem phần tử có tồn tại trong mảng thứ nhất hay không.
    • Nếu phần tử tồn tại thì trả về True Other Return False

    JavaScript

    intersect ([arr1, arr2, arr3...]);
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([arr1, arr2, arr3...]);
    
    28
    intersect ([arr1, arr2, arr3...]);
    
    6
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ([arr1, arr2, arr3...]);
    
    8
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    8
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    0
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    3

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([arr1, arr2, arr3...]);
    
    38
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    6
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    8
    intersect ([arr1, arr2, arr3...]);
    
    7
    intersect ({foo: [1, 2, 3, 4], bar: {a: 2, j:4}}); // [2, 4]
    intersect ([{x: "hello", y: "world"}, ["hello", "user"]]); // ["hello"]
    
    0
    intersect ([arr1, arr2, arr3...]);
    
    44

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    3
    intersect ([arr1, arr2, arr3...]);
    
    47

    intersect ([[1, 3, 4, 6, 3], [1, 8, 99]]);
    // Expected: [ '1' ]
    // Actual: [ '1', '3' ]
    
    5
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    5
    intersect ([arr1, arr2, arr3...]);
    
    50

    intersect ([arr1, arr2, arr3...]);
    
    4
            if (index[v] === undefined) index[v] = 0;
            index[v]++;
    
    9

    intersect ([arr1, arr2, arr3...]);
    
    4
    intersect ([arr1, arr2, arr3...]);
    
    54

    intersect ([arr1, arr2, arr3...]);
    
    55

    Output:  

    intersect ([arr1, arr2, arr3...]);
    
    2

    JavaScript được biết đến nhiều nhất để phát triển trang web nhưng nó cũng được sử dụng trong nhiều môi trường không phải là trình duyệt. Bạn có thể tìm hiểu JavaScript từ cơ sở bằng cách làm theo các ví dụ JavaScript và JavaScript này.