我的2D数据数组(让我们调用变量SELECT DISTINCT main_table.*,
blacklist.entity_id AS marked
FROM sales_flat_order_grid AS main_table
LEFT JOIN (SELECT main_table.*
FROM plugincompany_blacklist_item AS main_table
WHERE ( order_id != '0' )
GROUP BY order_id) AS blacklist
ON main_table.entity_id = blacklist.order_id
WHERE ( created_at >= '2016-11-03 00:00:00'
AND created_at <= '2016-11-26 23:59:59' )
)代表一个包含各种字段的表:
arr
在这种情况下,我需要按第3列=红色过滤 [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
如何将.filter函数应用于2D数组以过滤单个字段/列?
答案 0 :(得分:3)
let filtered = arr.filter(dataRow => dataRow[2] === 'Red');
正如@ozeebee所述,Google App脚本目前不支持ES6,因此您应该尝试以下操作:
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;
}
因为比较的结果是布尔值。