搜索一个多维数组
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.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;
}
演示小提琴相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- JavaScript数组包含一个值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- jQuery$.inArray()总是返回-1和一个对象数组
- 在数组中的一个元素上设置多个值
- javascript处理一个对象数组以获得一个新的对象数组
- 作为一个二维数组,从ajax接收
- 你能用来自数组的属性名称生成一个对象吗
- 多维关联数组的最后一个索引
- 如何创建一个方法来验证数组的范围
- 循环以检查数组中的最后一个图像
- 在Javascript中将一个值和字符串数组转换为if语句
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何将一个对象添加到每个对象数组中
- 如何创建一个谷歌地图地理坐标数组
- 如何从另一个带下划线的数组中筛选带元素的数组
- 使用window.location.htm和匹配的URL数组(一个用于桌面,一个用于移动)将桌面网站重定向到移动
- Javascript排序多维数组-一个完整的例子
- 刽子手的游戏.2数组.一个需要相应地更新另一个