从javascript中的数字列表中获得等于或大于数字的数字

时间:2016-05-29 08:13:53

标签: javascript angularjs

我有一个包含数字列表的数组。我需要将它与变量进行比较,得到等于或略大于变量的值。

var items=[1, 2, 3.4, 3.8, 4.8, 4.2, 2.3, 1.5, 3.7];
var a=3.5;

在此,我想将var aitems的每个项目进行比较,并为var b分配items的值,该值等于或大于{{1} }}。 注意:我只需要一个值;在这种情况下,我需要var a

3 个答案:

答案 0 :(得分:4)

使用 filter() 方法从数组中过滤值,并使用 Math.min apply()从数组中获取最小值



var items = [1, 2, 3.4, 3.8, 4.8, 4.2, 2.3, 1.5, 3.7];
var a = 3.5;

console.log(
  // get min value from filtered array
  Math.min.apply(Math, items.filter(function(v) {
    return v >= a; // filter value greater than or equal
  }))
)




或使用 reduce() 方法



var items = [1, 2, 3.4, 3.8, 4.8, 4.2, 2.3, 1.5, 3.7];
var a = 3.5;

console.log(
  items.reduce(function(r, v) {
    // check value is greater than or equal and then return the min value
    return (v >= a && (r == undefined || v < r)) ? v : r;
  }, undefined)
)
&#13;
&#13;
&#13;

答案 1 :(得分:3)

使用Array#filter

&#13;
&#13;
var items = [1, 2, 3.4, 3.8, 4.8, 4.2, 2.3, 1.5, 3.7];
var a = 3.5;
var filtered = items.filter(function(item) {
  return item >= a;
});
console.log(filtered);
&#13;
&#13;
&#13;

如果您只期望一个值

&#13;
&#13;
var items = [1, 2, 3.4, 3.8, 4.8, 4.2, 2.3, 1.5, 3.7];
var a = 3.5;
var filtered = items.filter(function(x, y) {
  return x >= a;
});
console.log(Math.min.apply(Math, filtered)); //To get the minimum value from array

console.log(filtered.sort()); //To sort the filtered values
&#13;
&#13;
&#13;

答案 2 :(得分:0)

带有Array#reduce的单循环应该会有所帮助。

var items = [1, 2, 3.4, 3.8, 4.8, 4.2, 2.3, 1.5, 3.7],
    a = 3.5,
    result = items.reduce(function (r, b) {
        return b > a && (r === undefined || b < r) ? b : r;
    }, undefined);

console.log(result);