【发布时间】:2017-11-11 16:18:29
【问题描述】:
这里是原始数组,
var dates =
[ { user_id: '1', week_number: '2', amount: '100' },
{ user_id: '1', week_number: '2', amount: '100' },
{ user_id: '1', week_number: '2', amount: '100' },
{ user_id: '1', week_number: '3', amount: '100' },
{ user_id: '3', week_number: '3', amount: '100' } ]
更新
首先,我尝试按最高 week_number 值对数组进行排序:
var x = dates.sort(function (itemA, itemB) {
return itemA.week_number < itemB.week_number;
});
得到:
[ { user_id: '1', week_number: '3', amount: '100' },
{ user_id: '3', week_number: '3', amount: '100' },
{ user_id: '1', week_number: '2', amount: '100' },
{ user_id: '1', week_number: '2', amount: '100' },
{ user_id: '1', week_number: '2', amount: '100' } ]
然后使用.filter得到
[ { user_id: '1', week_number: '3', amount: '100' },
{ user_id: '3', week_number: '3', amount: '100' },]
后来我找到了reduce 方法,但它只返回一个具有最高week_number 值的对象。
var max = dates.reduce(function(prev, current) {
return (prev.week_number > current.week_number) ? prev : current
})
正如您将看到的,.filter 将完成工作。
非常感谢您提供的所有答案。你是最棒的!!!
【问题讨论】:
-
它应该显示包含
'4'的对象的数组 -
我的意思是,如果只有一个
week_number: '4'和多个week_number: '3'怎么办? -
应该有包含
week_number: 'max'的对象的数组 -
如果你能保证列表是
week_number排序的,那么你需要做的就是在末尾开始一个循环,并在week_number变化时中断。 -
你不需要对数组进行排序,因为你只需要一个循环来获取想要的对象。
标签: javascript arrays json filter