我有一个项目在Javascript类似于以下的数组:减少与Underscore.js JavaScript的阵列(或与纯javascript)
var data =
[
{"id":"338b79f07dfe8b3877b3aa41a5bb8a58","date":"2000-10-05T13:21:30Z","value": {"country":"United States"}},
{"id":"338b79f07dfe8b3877b3aa41a5bb983e","date":"2000-02-05T13:21:30Z","value":{"country":"Norway"}},
{"id":"338b79f07dfe8b3877b3aa41a5ddfefe","date":"2000-12-05T13:21:30Z","value":{"country":"Hungary"}},
{"id":"338b79f07dfe8b3877b3aa41a5fe29d7","date":"2000-05-05T13:21:30Z","value":{"country":"United States"}},
{"id":"b6ed02fb38d6506d7371c419751e8a14","date":"2000-05-05T18:15:30Z","value":{"country":"Germany"}},
{"id":"b6ed02fb38d6506d7371c419753e20b6","date":"2000-12-05T18:15:30Z","value":{"country":"Hungary"}},
{"id":"b6ed02fb38d6506d7371c419755f34ad","date":"2000-06-05T18:15:30Z","value":{"country":"United States"}},
{"id":"b6ed02fb38d6506d7371c419755f3e17","date":"2000-04-05T22:15:30Z","value":{"country":"Germany"}},
{"id":"338b79f07dfe8b3877b3aa41a506082f","date":"2000-07-05T22:15:30Z","value":{"country":"United Kingdom"}},
{"id":"9366afb036bf8b63c9f45379bbe29509","date":"2000-11-05T22:15:30Z","value":{"country":"United Kingdom"}}
];
我需要查询(减少)由日期阵列。大于或小于预定日期,例如。当前日期。
我想使用Underscores reduce方法来做到这一点。任何人都可以提供我如何做到这一点的例子吗?
编辑:我想是这样的:
var itemsByDate = _(items).reduce(function(memo, item) {
memo[item.date] = memo[item.date] || [];
memo[item.date].push(item);
return memo;
}, {});
console.log((JSON.stringify(itemsByDate["2000-11-05T22:15:30Z"])));
但是这看起来完全匹配的内容,将可能无法与日期正确,因为它们是字符串处理。
问候,
Carlskii
你想要什么? *过滤*数组以获得条件的子数组,或*将其减少为单个值(这可能是一个复杂的对象) – Bergi
使用'groupBy'函数可以更容易地实现您所做的事情([demo] (http://jsfiddle.net/cM87e/))。但是,我并没有真正理解你的模糊约简(“*大于或小于日期*”)是什么意思? – Bergi
我需要从数据创建一些图表,所以我打算按时间段将其分解为子数组。例如从今天起30,60,90,120天。由于当前日期将被用作查询的开始日期,我想我只需要关心在每个时期创建一个子数组。 例如 子列表1 - 包含当前日期+ 30天的项目 子列表2 - 包含当前日期+ 60天的项目... etc ..等 – user1513388