我需要使用权重值获取数组中下一个较低的对象。
const data = [
{ weight: 1, size: 2.5 },
{ weight: 2, size: 3.0 },
{ weight: 4, size: 3.5 },
{ weight: 10, size: 4.0 },
{ weight: 20, size: 5.0 },
{ weight: 30, size: 6.0 }
]
如果重量是19,我需要得到这个物体{ weight: 10, size: 4.0 }
.
通过这次尝试,我确实获得了最接近的对象,但我总是需要获得具有下一个最低值的对象。如果权重小于 1,则应返回第一个元素。
const get_size = (data, to_find) =>
data.reduce(({weight}, {weight:w}) =>
Math.abs(to_find - w) < Math.abs(to_find - weight) ? {weight: w} : {weight}
)
如果对象的权重按顺序排列,就像问题中一样,一种选择是从数组末尾进行迭代。第一个匹配的对象就是您想要的。
If the .find
下面不返回任何内容,交替使用|| data[0]
获取数组中的第一项:
const data = [
{ weight: 1, size: 2.5 },
{ weight: 2, size: 3.0 },
{ weight: 4, size: 3.5 },
{ weight: 10, size: 4.0 },
{ weight: 20, size: 5.0 },
{ weight: 30, size: 6.0 }
]
const output = data.reverse().find(({ weight }) => weight < 19) || data[0];
console.log(output);
(如果你不想变异data
, 你可以.slice
首先)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)