【问题标题】:Return single json object from json array that matches minimum value [duplicate]从匹配最小值的json数组返回单个json对象[重复]
【发布时间】:2026-02-05 22:25:02
【问题描述】:

我有一个这样的数组

     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,我想得到 ​​p>

{ i: 1, j: 0, day: 3 } 

作为输出

这个方法我试过了

Math.min.apply(Math,data.map(function(item){return item.day})) 但它只返回最小值day

我发现的一个解决方案是使用indexOf 方法,但我认为这不是一个好习惯。有什么速记方法吗??

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

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

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

    在没有初始值的空数组上调用reduce是错误的。

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

    【讨论】:

      最近更新 更多