我有一个包含数字列表的数组。我需要将它与变量进行比较,得到等于或略大于变量的值。
var items=[1, 2, 3.4, 3.8, 4.8, 4.2, 2.3, 1.5, 3.7];
var a=3.5;
在此,我想将var a
与items
的每个项目进行比较,并为var b
分配items
的值,该值等于或大于{{1} }}。
注意:我只需要一个值;在这种情况下,我需要var a
。
答案 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;
答案 1 :(得分:3)
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;
如果您只期望一个值
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;
答案 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);