Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

39

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang sử dụng JavaScript và muốn kiểm tra xem một mảng có tồn tại trong một mảng mảng hay không.

Đây là mã của tôi, cùng với các giá trị trả về:

var myArr = [1,3];
var prizes = [[1,3],[1,4]];
prizes.indexOf(myArr);
-1

Tại sao?

Nó giống nhau trong jQuery:

$.inArray(myArr, prizes);
-1

Tại sao lại trở lại -1 khi phần tử có mặt trong mảng?

Đã hỏi ngày 23 tháng 10 năm 2013 lúc 13:48Oct 23, 2013 at 13:48

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

2

Bạn có thể sử dụng cái này

 var a = [ [1,2] , [3,4] ];
 var b = [1,2];
 a = JSON.stringify(a);
 b = JSON.stringify(b);

sau đó bạn có thể chỉ làm một chỉ mục () để kiểm tra xem nó có mặt không

var c = a.indexOf(b);
if(c != -1){
    console.log('element present');
}

Đã trả lời ngày 19 tháng 10 năm 2015 lúc 9:24Oct 19, 2015 at 9:24

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

ajack13ajack13ajack13

6171 Huy hiệu vàng7 Huy hiệu bạc1 gold badge7 silver badges10 bronze badges

3

Bởi vì

$.inArray(myArr, prizes);
-1
4, vì các đối tượng sẽ chỉ bằng nếu chúng tham chiếu cùng một đối tượng. Bạn cần viết thói quen tìm kiếm của riêng bạn:

function searchForArray(haystack, needle){
  var i, j, current;
  for(i = 0; i < haystack.length; ++i){
    if(needle.length === haystack[i].length){
      current = haystack[i];
      for(j = 0; j < needle.length && needle[j] === current[j]; ++j);
      if(j === needle.length)
        return i;
    }
  }
  return -1;
}

var arr = [[1,3],[1,2]];
var n   = [1,3];

console.log(searchForArray(arr,n)); // 0

Người giới thiệu

  • Sử dụng các toán tử bình đẳng:

    Nếu cả hai toán hạng là đối tượng, chúng được so sánh dưới dạng đối tượng và kiểm tra bình đẳng chỉ đúng nếu cả hai đề cập đến cùng một đối tượng.

Đã trả lời ngày 23 tháng 10 năm 2013 lúc 13:50Oct 23, 2013 at 13:50

ZetazetaZeta

101K13 Huy hiệu vàng191 Huy hiệu bạc231 Huy hiệu Đồng13 gold badges191 silver badges231 bronze badges

4

Bạn có thể lặp lại mảng mảng với

$.inArray(myArr, prizes);
-1
5 và sau đó kiểm tra mọi mục của mảng bên trong với mảng duy nhất với
$.inArray(myArr, prizes);
-1
6.

var array = [1, 3],
    prizes = [[1, 3], [1, 4]],
    includes = prizes.some(a => array.every((v, i) => v === a[i]));

console.log(includes);

Đã trả lời ngày 27 tháng 2 năm 2019 lúc 9:06Feb 27, 2019 at 9:06

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

Nina Scholznina ScholzNina Scholz

361K24 Huy hiệu vàng323 Huy hiệu bạc365 Huy hiệu Đồng24 gold badges323 silver badges365 bronze badges

1

Bởi vì cả hai phương pháp này đều sử dụng bình đẳng tham chiếu khi hoạt động trên các đối tượng. Mảng tồn tại và cái bạn đang tìm kiếm có thể giống hệt nhau về mặt cấu trúc, nhưng chúng là các đối tượng duy nhất để chúng không so sánh như nhau.

Điều này sẽ cho kết quả dự kiến, ngay cả khi nó không hữu ích trong thực tế:

var myArr = [1,3];
var prizes = [myArr,[1,4]];
prizes.indexOf(myArr);

Để làm những gì bạn muốn, bạn sẽ cần phải viết mã so sánh rõ ràng nội dung của các mảng một cách đệ quy.

Đã trả lời ngày 23 tháng 10 năm 2013 lúc 13:50Oct 23, 2013 at 13:50

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

ZetazetaJon

101K13 Huy hiệu vàng191 Huy hiệu bạc231 Huy hiệu Đồng78 gold badges723 silver badges793 bronze badges

Bạn có thể lặp lại mảng mảng với

$.inArray(myArr, prizes);
-1
5 và sau đó kiểm tra mọi mục của mảng bên trong với mảng duy nhất với
$.inArray(myArr, prizes);
-1
6.

Đã trả lời ngày 27 tháng 2 năm 2019 lúc 9:06

Đã trả lời ngày 23 tháng 10 năm 2013 lúc 13:50Oct 23, 2013 at 13:50

ZetazetaWolph

101K13 Huy hiệu vàng191 Huy hiệu bạc231 Huy hiệu Đồng10 gold badges132 silver badges147 bronze badges

Bạn có thể lặp lại mảng mảng với

$.inArray(myArr, prizes);
-1
5 và sau đó kiểm tra mọi mục của mảng bên trong với mảng duy nhất với
$.inArray(myArr, prizes);
-1
6.

// attach the .compare method to Array's prototype to call it on any array
Array.prototype.compare = function (array) {
    // if the other array is a falsy value, return
    if (!array)
        return false;

    // compare lengths - can save a lot of time
    if (this.length != array.length)
        return false;

    for (var i = 0; i < this.length; i++) {
        // Check if we have nested arrays
        if (this[i] instanceof Array && array[i] instanceof Array) {
            // recurse into the nested arrays
            if (!this[i].compare(array[i]))
                return false;
        }
        else if (this[i] != array[i]) {
            // Warning - two different object instances will never be equal: {x:20} != {x:20}
            return false;
        }
    }
    return true;
}

Đã trả lời ngày 27 tháng 2 năm 2019 lúc 9:06

prizes.filter(function(a){ return a.compare(myArr)})

Nina Scholznina Scholz

361K24 Huy hiệu vàng323 Huy hiệu bạc365 Huy hiệu ĐồngOct 23, 2013 at 13:57

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

Bởi vì cả hai phương pháp này đều sử dụng bình đẳng tham chiếu khi hoạt động trên các đối tượng. Mảng tồn tại và cái bạn đang tìm kiếm có thể giống hệt nhau về mặt cấu trúc, nhưng chúng là các đối tượng duy nhất để chúng không so sánh như nhau.Hilmi

Điều này sẽ cho kết quả dự kiến, ngay cả khi nó không hữu ích trong thực tế:6 gold badges25 silver badges54 bronze badges

Để làm những gì bạn muốn, bạn sẽ cần phải viết mã so sánh rõ ràng nội dung của các mảng một cách đệ quy.

Jonjon

let anarr = ['a',1, 2]
let arrofarrs = [['a',1, 2], [2,3,4]]

arrofarrs.map(
  subarr => subarr.every(
    (arr_elem, ind) => arr_elem == anarr[ind]
  )
)

// output
// Array [ true, false ]

419K78 Huy hiệu vàng723 Huy hiệu bạc793 Huy hiệu Đồng

$.inArray(myArr, prizes);
-1
0

Bởi vì các đối tượng JavaScript được so sánh bằng danh tính, không phải giá trị. Vì vậy, nếu họ không tham khảo cùng một đối tượng, họ sẽ trả về sai.

Bạn cần so sánh đệ quy để điều này hoạt động đúng.Apr 26, 2021 at 21:34

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

Wolphwolph

$.inArray(myArr, prizes);
-1
1

75,8K10 Huy hiệu vàng132 Huy hiệu bạc147 Huy hiệu đồng

Đầu tiên xác định chức năng so sánh cho các mảngOct 23, 2013 at 14:18

thứ hai chỉ cần tìm mảng vớiguypursey

Lưu ý: Kiểm tra khả năng tương thích của trình duyệt cho mảng.Filter3 gold badges22 silver badges40 bronze badges

$.inArray(myArr, prizes);
-1
2

Đã trả lời ngày 23 tháng 10 năm 2013 lúc 13:57

  • Hilmihilmi

  • 3.3616 Huy hiệu vàng25 Huy hiệu bạc54 Huy hiệu đồng

  • Không phải là chuyên gia của JS, mà chỉ tìm ra cách làm điều này với

    $.inArray(myArr, prizes);
    -1
    
    7 và
    $.inArray(myArr, prizes);
    -1
    
    8

Để tìm các chỉ số của các trận đấu:

Và để kiểm tra ________ 19/________ 20 Nếu mảng có chứa Subarray chỉ cần thay đổi

 var a = [ [1,2] , [3,4] ];
 var b = [1,2];
 a = JSON.stringify(a);
 b = JSON.stringify(b);
1 thành
 var a = [ [1,2] , [3,4] ];
 var b = [1,2];
 a = JSON.stringify(a);
 b = JSON.stringify(b);
2

OFC chỉ hoạt động cho một lớp làm tổ, nhưng có thể được làm lại;)Jun 25, 2016 at 19:42

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

Đã trả lời ngày 26 tháng 4 năm 2021 lúc 21:34Cumulo Nimbus

Giả sử bạn chỉ xử lý một mảng hai chiều (bạn đề cập đến một "mảng mảng" nhưng không có gì sâu sắc hơn thế), mã không nhận được này nên làm những gì bạn cần.9 gold badges47 silver badges65 bronze badges

$.inArray(myArr, prizes);
-1
3

JSfiddle: http://jsfiddle.net/guypursey/v7xpe/. (Xem bảng điều khiển để xem kết quả.)Jan 26, 2021 at 21:57

Hướng dẫn how do you check if an array of arrays contains an array javascript? - làm thế nào để bạn kiểm tra xem một mảng của mảng có chứa một javascript mảng hay không?

Đã trả lời ngày 23 tháng 10 năm 2013 lúc 14:18

GUYPURSYGUPURSEY

3.0443 Huy hiệu vàng22 Huy hiệu bạc40 Huy hiệu đồngJun 28, 2021 at 7:39

Làm thế nào để bạn kiểm tra xem một mảng có chứa một mảng khác trong JavaScript không?

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 khác trả về sai.. Use the inbuilt function includes() with second array to check if element exist in the first array or not. If element exist then return true else return false.

Làm thế nào để bạn kiểm tra xem một mảng có nằm trong một mảng không?

Nếu bạn cần xem một mảng có tồn tại chỉ cần tính toán băm O (n) và tra cứu O (1).hàm băm có thể đơn giản như kết hợp tất cả các phần tử với '-', nếu kích thước mảng của bạn là lớn, hãy tạo một số từ mảng đó ([1,2] => 12) và sử dụng mod của một số nguyên tố lớn, chochuỗi va chạm chúng.calculate the hash o(n) and lookup o(1). hash function can be as simple as concatinating all the elements with '-' , if your array size is huge, make a number from that array ([1,2] => 12) , and use mod of a big prime number, for collision chain them.

Làm thế nào để bạn tìm thấy mảng trong mảng?

Sử dụng bộ lọc nếu bạn muốn tìm tất cả các mục trong một mảng đáp ứng một điều kiện cụ thể.Sử dụng Tìm nếu bạn muốn kiểm tra xem ít nhất một mục đáp ứng một điều kiện cụ thể.Sử dụng bao gồm nếu bạn muốn kiểm tra xem một mảng có chứa một giá trị cụ thể không.Sử dụng indexof nếu bạn muốn tìm chỉ mục của một mục cụ thể trong một mảng.. Use find if you want to check if that at least one item meets a specific condition. Use includes if you want to check if an array contains a particular value. Use indexOf if you want to find the index of a particular item in an array.

Làm thế nào để bạn kiểm tra xem một mảng có chứa một phần tử trong JavaScript không?

Mảng JavaScript bao gồm () Phương thức bao gồm () trả về true nếu một mảng chứa một giá trị được chỉ định.Phương thức bao gồm () trả về sai nếu không tìm thấy giá trị.Phương pháp bao gồm () là trường hợp nhạy cảm.includes() The includes() method returns true if an array contains a specified value. The includes() method returns false if the value is not found. The includes() method is case sensitive.