簡體   English   中英

Javascript搜索多維數組中的元素

[英]Javascript search for element in multidimensional array

我有以下代碼來組合一個數組和一個數組數組。

var arr1 = ["A", "B", "C", "D"];
var arr2 = [[1, 2, 3, 4, 3, 2],
            [4, 3, 7, 2, 5, 3],
            [8, 1, 9, 2, 8, 4],
            [2, 5, 9, 8, 7, 6],
           ]
var result = [], i = -1;

while ( arr1[++i] ) { 
  result.push( [ arr1[i], arr2[i] ] );
}

這是最終數組的外觀

var final =[["A", [1, 2, 3, 4, 3, 2]],
            ["B", [4, 3, 7, 2, 5, 3]],
            ["C", [8, 1, 9, 2, 8, 4]],
            ["D", [2, 5, 9, 8, 7, 6]],
           ]

我正在嘗試創建一個函數,在其中提供要從數組數組返回的列#的字母和索引。

即,如果我給它B2 ,它將返回result[1][1][2]7

如果我給它D5 ,它將返回result[3][1][5]6

我嘗試使用indexOf但由於該數組有3個維度,因此很難搜索。

這是我用我的樣本制作的jsFiddle任何幫助將不勝感激

編輯:似乎我唯一的問題是返回字母所在的列#。 如何使用indexOf搜索第一列中是否存在字母?

我建議如下更改您的邏輯:

var result = {}; // Make this to be an object

while ( arr1[++i] ) { 
  result[ arr1[i] ] = arr2[i];
}

這將創建一個類似於以下內容的對象:

result = {
    "A": [1,2,3,4,3,2],
    "B": [4,3,7,2,5,3],
    "C": [8,1,9,2,8,4],
    "D": [2,5,9,8,7,6]
}

從中訪問數據的方式是:

result['D'][5] // returns 6

在這里查看工作演示

這個功能如何:

function find(text, col) {
    for(var i = 0; i < result.length; i++)
        if(result[i][0].equals(text)) return result[i][1][col - 1];
    return null;
}

console.log(find("B", 3));

 var arr1 = ["A", "B", "C", "D"]; var arr2 = [ [1, 2, 3, 4, 3, 2], [4, 3, 7, 2, 5, 3], [8, 1, 9, 2, 8, 4], [2, 5, 9, 8, 7, 6], ] var result = [], i = -1; while (arr1[++i]) { result.push([arr1[i], arr2[i]]); } console.log(result) //Try to find element where text == "B" and return the 3rd column console.log(find("B", 3)) function find(text, col) { for (var i = 0; i < result.length; i++) if (result[i][0] == text) return result[i][1][col - 1]; return null; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM