javascript - 从匹配最小值的 json 数组返回单个 json 对象

标签 javascript node.js

<分区>

我有一个这样的数组

     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

我找到的一个解决方案是使用 indexOf方法,但我认为这不是一个好习惯。有什么简写方法吗??

最佳答案

你可以使用 Array#reduce并返回具有较小 day 属性的元素。

对于空数组,需要提前检查,因为

Calling reduce on an empty array without an initial value is an error.

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

关于javascript - 从匹配最小值的 json 数组返回单个 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45961316/

相关文章:

node.js - apollo-server-express CORS 问题

javascript - 如何使用 mongoose 和 bluebird promise 确认更新是否成功

javascript - R中将JSON格式转CSV上传数据表制作D3气泡图

javascript - 如何将所见即所得编辑器集成到 jQuery 模板中?

javascript - 在 Netbeans javascript IDE 中查看调用层次结构

javascript - jQuery AJAX 请求返回原始 PHP,而不是运行 PHP 的结果

Node.js 和 MongoDB,重用 DB 对象

javascript - 如何改进我的代码(连接函数中的参数) - JavaScript 初学者

javascript - 使用 Express http-proxy 从 API 存储 token

node.js - 如何在 sails.js 中跟踪退回的电子邮件或未送达的电子邮件