我正在使用ES6。假设我有一个像下面这样的排序数组。不使用lodash或jquery以外的任何其他库。

    sortedArray = [
    {a: "a", b: 2, c: "something1"},
    {a: "a1", b: 3, c: "something2"},
    {a: "a2", b: 4, c: "something3"},
    {a: "a3", b: 5, c: "something4"},
    {a: "a4", b: 6, c: "something5"},
    {a: "a5", b: 7, c: "something6"}
]

有没有一种有效的方法来找出其键b值最接近所提供值的对象。

如果提供值3.9,则应返回{a: "a2", b: 4, c: "something3"}

任何帮助表示赞赏。

最佳答案

使用reduce(因此在大数组上应该慢一些...):

sortedArray = [
    {a: "a", b: 2, c: "something1"},
    {a: "a1", b: 3, c: "something2"},
    {a: "a2", b: 4, c: "something3"},
    {a: "a3", b: 5, c: "something4"},
    {a: "a4", b: 6, c: "something5"},
    {a: "a5", b: 7, c: "something6"}
]
const search = 3.9
sortedArray.reduce((p,v)=> Math.abs(p.b-search) < Math.abs(v.b-search) ? p : v)
// {a: "a2", b: 4, c: "something3"}

09-18 03:44