NodeJS JSON数组过滤

我已经使用Node从SQL中检索一组结果,它们就像这样返回;

[ { "event_id": 111111, "date_time": "2012-11-16T01:59:07.000Z", "agent_addr": "127.0.0.1", "priority": 6, "message": "aaaaaaaaa", "up_time": 9015040, "hostname": "bbbbbbb", "context": "ccccccc" }, { "event_id": 111112, "date_time": "2012-11-16T01:59:07.000Z", "agent_addr": "127.0.0.1", "priority": 6, "message": "aaaaaaaaa", "up_time": 9015040, "hostname": "bbbbbbb", "context": "ddddddd" }, ] 

数组中通常有很多条目,我需要有效地过滤数组,以便仅显示具有“ccccccc”上下文的条目。 我已经尝试了一个for循环,但它非常慢。

任何build议?

有一个非常简单的方法,如果你想在节点中做这个,并且不想使用sql,那么你可以使用javascript内置的Array.filter函数。

 var output = arr.filter(function(x){return x.context=="ccccccc"}); //arr here is you result array 

输出数组将仅包含具有上下文“ccccccc”的对象。

  1. 正如Matt所build议的,为什么在你的SQL查询中不包括WHERE context = "ccccccc"

  2. 否则,如果您必须保持全部可能使用以下之一来筛选结果

     // Place all "ccccccc" context row in an array var ccccccc = []; for (var i = results.length - 1; i >= 0; i--) { if(results[i] == 'ccccccc') ccccccc.push(results[i]); }; // Place any context in an named array within an object var contexts = {}; for (var i = results.length - 1; i >= 0; i--) { if(contexts[results[i]] == 'undefined') contexts[results[i]] contexts[results[i]].push(results[i]); }; 

    或使用下划线 (或类似的) 过滤function。