簡體   English   中英

通過多維數組搜索

[英]search through a multi dimentional array

我需要搜索一個多維數組,並通過在第一個元素中查找一個單詞來找到第三個值的所有值

array

car,blue,34

bus,yellow,55

car,green,88

truck,blue,55

bus,yellow,44

因此,我想提示所有有關汽車的數字。...所以34,88

var numbers = [];
for(var i = 0; i < arr.length; i++) {
    if(arr[i][0] == "car") numbers.push(arr[i][2]);
}

如果您的“數組”如下所示:

 stuff = {}
 stuff['car'] = {};
 stuff['car']['blue'] = 34;
 stuff['car']['red'] = 100;
 stuff['bus'] = {};
 stuff['bus']['yellow'] = 99;

那么您想做這樣的事情:

 searchfor = 'car';
 results= [];
 for(var i in stuff) {
   if (i==searchfor) {
      for(var ii in stuff[i]) {
          results[] = stuff[i][ii];
      }
   }
 }
return results;

結果將如下所示

[34,100]

一種方法是使用Array.prototype.filterArray.prototype.map

給出一個看起來像這樣的數組:

var items = [
    ['car','blue',34],
    ['bus','yellow',55],
    ['car','green',88],
    ['truck','blue',55],
    ['bus','yellow',44]
    ];

您將首先根據類型(位置0的值)過濾數組,然后將這些結果映射到新數組上:

function getAttributes(type, pos) {
    return items.filter(function(val) {
        return val[0] === type;
    }).map(function(val) {
        return val[pos];
    });
}

然后這樣稱呼它:

alert(getAttributes('car', 2));

結果:

[34,88]

演示小提琴

或者,您可以使用for循環執行相同的操作:

function getAttributes(type, pos) {
    var retVal = [];
    var len    = items.length;

    for(var i = 0; i < len; ++i) {
        if(items[i][0] === type) {
            retVal.push(items[i][pos]);
        }
    }

    return retVal;
}

演示小提琴

暫無
暫無

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

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