我正在努力解决这个问题,我有一个带有嵌套数组的数组,像这样
var array = [
[12, 43801309, "21.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[13, 43801308, "22.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[34, 43801307, "23.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[234, 43801308, "24.10.2018 00:00:00", 0.00089, 0.00055, 0.0004]
]
我想为某些值(例如43801309)过滤那些嵌套数组的[index = 1] 如果只是该数组中的单个值
array.filter(function(val) {
return val === lookupVal;
});
就可以了,但是如果我尝试
array.filter(function(arr) {
return arr.filter(function(val) {
return val === lookupVal;
});
});
它不起作用
答案 0 :(得分:2)
如果[index]始终是数组的第二个元素,则只需检查索引1处的值是否为所需的索引即可。
var array = [
[12, 43801309, "21.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[13, 43801308, "22.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[34, 43801307, "23.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[234, 43801308, "24.10.2018 00:00:00", 0.00089, 0.00055, 0.0004]
];
var targetIndex = 43801308;
var filtered = array.filter(val => val[1] === targetIndex);
console.log(filtered);
答案 1 :(得分:1)
您可以自定义过滤条件
if(c.indexOf(43801308) > -1
(如果没有检查索引)
if(c[1] == 43801308)
,如果检查索引为1
let data = [
[12, 43801309, "21.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[13, 43801308, "22.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[34, 43801307, "23.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[234, 43801308, "24.10.2018 00:00:00", 0.00089, 0.00055, 0.0004]
];
let result = data.filter(c=> { if(c.indexOf(43801308) > -1) return c;});
console.log(result);
let data = [
[12, 43801309, "21.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[13, 43801308, "22.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[34, 43801307, "23.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[234, 43801308, "24.10.2018 00:00:00", 0.00089, 0.00055, 0.0004]
];
let result = data.filter(c=> { if(c.indexOf(43801308) > -1) return c;});
//if only need index 1
result = data.filter(c=> { if(c[1] == 43801308) return c;});
console.log(result);
答案 2 :(得分:0)
array.filter(function(arr) {
return arr[1] === value;
}
这应该可以解决您的问题。您似乎不想过滤嵌套数组,而是选择包含值的数组。
答案 3 :(得分:0)
您不想过滤两次。您真正想要实现的是匹配特定条件的过滤器行,在您的情况下,条件是row[1] === lookupVal
。
const array = [
[12, 43801309, "21.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[13, 43801308, "22.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[34, 43801307, "23.10.2018 00:00:00", 0.00089, 0.00055, 0.0004],
[234, 43801308, "24.10.2018 00:00:00", 0.00089, 0.00055, 0.0004]
];
const lookupVal = 43801308;
const filterRows = array.filter(row => row[1] === lookupVal);
console.log(filterRows);