从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);
- 如何使用带有Node.js和AMD的Backbone Model(浏览器上的require.js)
- Object.keys执行时间
- 如何使用使用Passport.js的远程NodeJS API对客户端Web应用程序进行身份validation和授权
- 如何在服务器端构buildNode,Express,Connect-Auth和Backbone应用程序?
- 使audio在所有浏览器上工作
- 使用multer作为node.js服务器接收FormData对象
- node.js – 如何“emitter.setMaxListeners()”?
- undefined不是一个函数Node.JS
- Node Express Handlebars助手不返回函数的结果