我有一个包含对象列表的数组:
let intervals =
[
{ id: "1", interval_start: "0", interval_end: "40" },
{ id: "2", interval_start: "41", interval_end: "65" },
{ id: "3", interval_start: "66", interval_end: "80" },
{ id: "4", interval_start: "81", interval_end: "100" },
];
var result = intervals.reduce(function(prev, current) {
return (prev.interval_end > current.interval_end) ? prev : current
});
console.log(result)
我试图搜索最小的interval_end
是id: 1
但这将返回id: 3
答案 0 :(得分:2)
问题似乎出在字符串比较中
let intervals =
[
{ id: "1", interval_start: "0", interval_end: "40" },
{ id: "2", interval_start: "41", interval_end: "65" },
{ id: "3", interval_start: "66", interval_end: "80" },
{ id: "4", interval_start: "81", interval_end: "100" },
];
console.log(intervals.reduce((prev, current) => parseInt(prev.interval_end) < parseInt(current.interval_end) ? prev : current, {}))
答案 1 :(得分:0)
您需要取小于作为条件和数值,因为您将比较字符串。例如,对于'40'
和'100'
来说这是错误的。
let intervals = [
{ id: "1", interval_start: "0", interval_end: "40" },
{ id: "2", interval_start: "41", interval_end: "65" },
{ id: "3", interval_start: "66", interval_end: "80" },
{ id: "4", interval_start: "81", interval_end: "100" }
],
result = intervals.reduce((prev, current) =>
+prev.interval_end < +current.interval_end ? prev : current
);
console.log(result);