搜索多维数组

时间:2014-08-15 17:54:30

标签: javascript arrays

我需要搜索多维数组并通过在第一个元素中查找单词来查找第三个值的所有值

array

car,blue,34

bus,yellow,55

car,green,88

truck,blue,55

bus,yellow,44

所以我想把所有的数字都当作汽车......所以34,88

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果您的&#39;阵列&#39;看起来像这样:

 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]

答案 2 :(得分:0)

一种方法是使用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]

demo fiddle

或者你可以使用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;
}

demo fiddle