搜索一个多维数组

search through a multi dimentional array

本文关键字:数组 一个 搜索      更新时间:2023-09-26

我需要通过在第一个元素

中查找单词来搜索多维数组并找到第三个值的所有值
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.filter和Array.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;
}
演示小提琴