我有一个二维数据数组(让我们调用变量arr
),它表示一个包含各种字段的表:
[1] [2] [3] [4]
[1],Fruit,Apple,Red,10
[2],Fruit,Apple,Green,20
[3],Berry,Strawberries,Red,5
[4],Tuber,Potato,Yellow,2
在本例中,我需要按第3列=红色(我不想在所有表中搜索arr
变量,仅在第3列中)过滤该变量,以获得以下结果:
[1] [2] [3] [4]
[1],Fruit,Apple,Red,10
[2],Berry,Strawberries,Red,5
如何将.filter函数应用于2D数组,以便对单个字段/列进行筛选?
发布于 2016-11-28 16:51:10
ECMAScript 6
let filtered = arr.filter(dataRow => dataRow[2] === 'Red');
正如@ozeebee所指出的,ES6目前在中不受支持,因此您应该尝试以下操作:
ECMAScript 5
var filtered = arr.filter(function (dataRow) {
return dataRow[2] === 'Red';
});
在注释中,“经典方式”指的是ES5方法。
解释
.filter
函数接受一个参数,它是对一个函数的回调,如果数组条目应该保持不变,则返回true
;如果应该删除,则返回false
,这就是过滤。在这种情况下,我们应该检查表行的第三列是否等于Red
。代码:return dataRow[2] === 'Red'
等于:
if (dataRow[2] === 'Red') {
return true;
} else {
return false;
}
因为比较的结果是布尔值。
另请参阅
https://stackoverflow.com/questions/40849369
复制相似问题