我正在使用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"}