从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值的单行

例如在上面的数组中,最小day3 ,我想得到

 { 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);