从json数组中返回匹配最小值的单个json对象
我有一个这样的数组
var data = [ { i: 0, j: 0, day: 5 }, { i: 1, j: 0, day: 3 }, { i: 1, j: 1, day: 5 }, { i: 1, j: 2, day: 10 }, { i: 2, j: 0, day: 5 }, { i: 3, j: 0, day: 5 }, { i: 4, j: 0, day: 6 }, { i: 4, j: 1, day: 10 } ]
我想从JSON返回一个具有最小day
值的单行
例如在上面的数组中,最小day
是3
,我想得到
{ i: 1, j: 0, day: 3 }
作为输出
我已经尝试过这种方法
Math.min.apply(Math,data.map(function(item){return item.day}))
但它只返回最小day
我发现一个解决scheme是使用indexOf
方法,但我不认为这是一个很好的做法。 有没有简写的方法?
您可以使用Array#reduce
并返回具有较小day
属性的元素。
对于空数组,您需要提前检查,因为
调用一个没有初始值的空数组是一个错误。
var data = [{ i: 0, j: 0, day: 5 }, { i: 1, j: 0, day: 3 }, { i: 1, j: 1, day: 5 }, { i: 1, j: 2, day: 10 }, { i: 2, j: 0, day: 5 }, { i: 3, j: 0, day: 5 }, { i: 4, j: 0, day: 6 }, { i: 4, j: 1, day: 10 }], result = data.reduce(function (a, b) { return a.day < b.day ? a : b; }); console.log(result);