如何过滤数组数组?

时间:2016-11-28 16:43:04

标签: arrays multidimensional-array google-apps-script filter

我的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数组以过滤单个字段/列?

1 个答案:

答案 0 :(得分:3)

ECMAScript 6

let filtered = arr.filter(dataRow => dataRow[2] === 'Red');

正如@ozeebee所述,Google App脚本目前不支持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;
}

因为比较的结果是布尔值。

另见