javascript - 使用 javascript 从数组对象元素中查找最接近的值

标签 javascript node.js underscore.js

如何从此数组中找到最接近的 user_value 值? 这是 user_value 变量,根据这个我需要从数组中找出最接近的值。

var user_value = 5500;
var array = [ 

    {_id: 5809e269d60f577ae35f6add,
      coins: 1000,
      is_active: 1,
      iconId: 4 },
    {_id: 5809e269d60f577ae35f6ade,
      coins: 2000,
      is_active: 1,
      iconId: 5 },
    {_id: 5809e269d60f577ae35f6adf,
      coins: 5000,
      is_active: 1,
      iconId: 6 },
    {_id: 5809e269d60f577ae35f6ae0,
      coins: 7000,
      is_active: 1,
      iconId: 7 },
    {_id: 5809e269d60f577ae35f6ae1,
      coins: 10000,
      is_active: 1,
      iconId: 8 },
    {_id: 5809e269d60f577ae35f6ae2,
      coins: 15000,
      is_active: 1,
      iconId: 9 } ];

最佳答案

您可以通过使用绝对差进行检查来使用迭代方法。

var value = 5500,
    array = [{ _id: '5809e269d60f577ae35f6add', coins: 1000, is_active: 1, iconId: 4 }, { _id: '5809e269d60f577ae35f6ade', coins: 2000, is_active: 1, iconId: 5 }, { _id: '5809e269d60f577ae35f6adf', coins: 5000, is_active: 1, iconId: 6 }, { _id: '5809e269d60f577ae35f6ae0', coins: 7000, is_active: 1, iconId: 7 }, { _id: '5809e269d60f577ae35f6ae1', coins: 10000, is_active: 1, iconId: 8 }, { _id: '5809e269d60f577ae35f6ae2', coins: 15000, is_active: 1, iconId: 9 }],
    result = array.reduce(function (r, a, i, aa) {
        return i && Math.abs(aa[r].coins - value) < Math.abs(a.coins - value) ? r : i;
    }, -1);

console.log(result);

关于javascript - 使用 javascript 从数组对象元素中查找最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44279103/

相关文章:

Javascript:仅在其自己的函数内直接修改数组

javascript - 选择在移动设备上提取错误信息的按钮

javascript - Python for 括号内循环语法

javascript - 为什么人们访问 JS 构造函数中的字段,而不是设置它们?

mysql - 如何在异步函数中发出post请求?

php - 在 Windows 上使用 less 和 symfony2

javascript - Underscore.js _.where 方法的意外结果

javascript - 如何避免使用 2 个条件对 JavaScript 数组进行两次排序

javascript - Node JS 或 Express JS HTTP GET 请求

javascript - 下划线模板 - 部分(使用 RequireJS)