Hướng dẫn find element in 2d array javascript - tìm phần tử trong javascript mảng 2d

Tôi thấy rằng trong IE6 ít nhất (tôi không chắc chắn về các phiên bản gần đây hơn), loại mảng tích hợp không có phương thức indexof. Nếu bạn đang thử nghiệm trong IE, có lẽ đó là lý do tại sao bạn không thể bắt đầu. Tôi đã viết bổ sung nhỏ này để bao gồm trong tất cả các mã của tôi:

if(!Array.prototype.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]===obj){
                return i;
            }
        }
     return -1;
   };
}

Tôi thực sự không thể nhận được tín dụng cho việc này. Đó có lẽ là một đoạn mã khá chung chung mà tôi tìm thấy trong một số hướng dẫn hoặc một trong những bài viết của Doug Crockford. Tôi khá chắc chắn ai đó sẽ đi cùng với một cách viết nó tốt hơn.

Tôi thấy làm việc trong Firefox là một nơi tốt để bắt đầu vì bạn có thể cài đặt bảng điều khiển Firebug và hiểu rõ hơn về nơi mọi thứ đang diễn ra sai. Tôi thừa nhận rằng không giải quyết các vấn đề về trình duyệt chéo, nhưng ít nhất nó cho phép bạn bắt đầu dự án của mình.

Phần mã nhỏ này sẽ đảm bảo bạn có thể sử dụng phương thức Indexof để tìm nơi một giá trị nhất định nằm trong một mảng một chiều. Với mảng 2 chiều của bạn, mỗi phần tử ở mảng bên ngoài là một mảng không phải là một giá trị duy nhất. Tôi sẽ làm một bài kiểm tra nhỏ để xem chính xác cách thức hoạt động của nó và liên hệ lại với bạn, trừ khi có ai đó đến với một câu trả lời tốt hơn.

Tôi hy vọng điều này ít nhất giúp bạn bắt đầu.

Cập nhật giả sử bạn có một trình duyệt thực hiện Array.indexof, tôi đã thử mọi cách để vượt qua một trong các phần tử mảng trong mảng bên ngoài của bạn.

alert(array.indexOf([3,56]))
alert(array.indexOf("3,56"))

Chỉ cần trả lại -1.

Oddly,

alert(array.indexOf(array[1]))

Trả về chính xác 1. Nhưng bạn cần biết chỉ mục của mảng bên trong để lấy chỉ mục! Tôi không thể thấy cách truyền một mảng cho phương thức indexof.

Ví dụ 1 trả về true nếu một phần tử tồn tại trong một mảng 2D, nếu không thì sai

Ví dụ 2 trả về chỉ mục mảng 2D, tức là [hàng, col] nếu được tìm thấy, nếu không thì sai

Vấn đề: indexof () không hoạt động cho các mảng JavaScript 2-D. Đây là giải pháp một lớp lót.

Có rất nhiều giải pháp ngoài kia đã lặp qua mảng 2D & nbsp; nhưng điều đó không cần thiết. Chỉ cần làm phẳng mảng sau đó sử dụng indexof ().

Hàm sau & nbsp; chuyển đổi mảng 2D thành một mảng một chiều, sau đó kiểm tra xem một mục có trong đó bằng cách sử dụng indexof (), trong một dòng ...

Ví dụ 1, trả về đúng hoặc sai:

function indexOf2d(array2d, itemtofind) {
    return [].concat.apply([], ([].concat.apply([], array2d))).indexOf(itemtofind) !== -1;
}

Cho ví dụ này mảng 2D:

array2d = [
    ["Yes", "sir", "that's", "my",   "baby",],
    ["No",  "sir", "don't",  "mean", "maybe"]
];

Concat (hoặc dẹt) mảng 2D để trở thành một mảng chiều đơn:

[] .concat.apply ([], ([] .concat.apply ([], Array2D))) // Làm phẳng mảng 2D// flattens the 2d array

Mảng 2D trở thành một mảng Dimention duy nhất:

.

Khi bạn có một mảng Dimeded duy nhất, bạn có thể sử dụng indexof ()

.

indexof2d (Array2D, "boy") // return -1 hoặc false indexof2d (mảng2D, "baby") // trả về 4 hoặc true indexof2d (mảng2D, "no") // trả về 5 hoặc true // returns -1 or false
indexOf2d(array2d, "baby") // returns 4 or true
​indexOf2d(array2d, "No") // returns 5 or true


Ví dụ 2, trả về hàng và cột:

Hàm sau trả về chỉ mục mảng 2D, tức là [hàng, col] của vị trí của mục tìm thấy. Quá trình này tương tự như ở trên nhưng cũng tính toán và trả về hàng và cột, hoặc sai nếu không tìm thấy.

function indexOf2dArray(array2d, itemtofind) {
    index = [].concat.apply([], ([].concat.apply([], array2d))).indexOf(itemtofind);
                
    // return "false" if the item is not found
    if (index === -1) { return false; }
    
    // Use any row to get the rows' array length
    // Note, this assumes the rows are arrays of the same length
    numColumns = array2d[0].length;
    
    // row = the index in the 1d array divided by the row length (number of columns)
    row = parseInt(index / numColumns);
    
    // col = index modulus the number of columns
    col = index % numColumns;
    
    return [row, col]; 
}

indexof2Darray (Array2D, "boy") // return -1 hoặc false indexof2Darray (Array2D, "baby") // returns [0, 4] & nbsp; Indexof2Darray (Array2D, "no") // trả về [1, 0]// returns -1 or false
indexOf2dArray(array2d, "baby") // returns [0, 4] 
​indexOf2dArray(array2d, "No") // returns [1, 0]

Indexof có hoạt động trên mảng 2D không?

Bạn không thể sử dụng indexof để thực hiện các mảng phức tạp (trừ khi bạn tuần tự hóa nó làm cho mọi thứ mỗi lần phối hợp thành các chuỗi), bạn sẽ cần sử dụng một vòng lặp (hoặc trong khi) để tìm kiếm tọa độ đó trong mảng đó giả sử bạn biết định dạng của mảng ( Trong trường hợp này là 2D). (unless you serialize it making everything each coordinate into strings), you will need to use a for loop (or while) to search for that coordinate in that array assuming you know the format of the array (in this case it is 2d).

Làm cách nào để tìm một phần tử trong một mảng mảng?

Sử dụng foreach () để tìm một phần tử trong một mảng mảng.nguyên mẫu.Phương thức foreach () thực thi cùng một mã cho từng phần tử của một mảng.Mã chỉ đơn giản là một tìm kiếm của Index Rudolf (🦌) đang sử dụng indexof. to find an element in an array The Array. prototype. forEach() method executes the same code for each element of an array. The code is simply a search of the index Rudolf (🦌) is in using indexOf.

Làm thế nào để bạn tìm thấy chỉ số của một mảng đa chiều?

Giá trị đó sẽ là đầu vào của người dùng.var mảng = [];var k = 0;for (var i = 0; i <10; i ++) {mảng [i] = [];for (var j = 0; j <100; j ++) {k = k+1 mảng [i].đẩy (k);}} var index = mảng ...
javascript..
arrays..
multidimensional-array..

Có mảng 2D trong JavaScript không?

Giới thiệu về các mảng 2D trong JavaScript.Mảng hai chiều là một tập hợp các yếu tố đồng nhất trải dài trên nhiều hàng và cột, giả sử dạng ma trận.Dưới đây là một ví dụ về mảng 2D có các hàng m và các cột N, do đó tạo ra một ma trận cấu hình MXN.Two-dimensional arrays are a collection of homogeneous elements that span over multiple rows and columns, assuming the form of a matrix. Below is an example of a 2D array which has m rows and n columns, thus creating a matrix of mxn configuration.