如何使用JavaScript通过小于和大于条件移除数组值

14

我想按照小于和大于的条件从中删除数值,例如我的数组是:

[ 138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120 ]

现在我的最小值是120,最大值是130。我想从数组中删除所有其余的元素。这在JavaScript中是否可能。

作为新手,任何帮助都将不胜感激。

5个回答

24

当然,只需筛选数组即可。

var arr = [
    138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120
]

var new_arr = arr.filter(function(x) {
    return x > 120 && x < 130;
});

FIDDLE

使用>=<=包括120和130等。


5

只需使用过滤器,它是为这类问题而创建的。下面的代码应该可以按照您的要求完成任务:

//ES6
var arr = [138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120];
var filteredArr = arr.filter(n => n>120 && n<130); //[124, 128, 126, 128]

3

我来扩展一下过滤器并将其放入一个可重用的函数中:

var arr = [
    138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120
]
/*
 * @param arr Array of integers
 * @param min Minimum (Inclusive)
 * @param max Maximum (Exclusive)
 */
var filterInRange = function(arr, min, max) {
    return arr.filter(function(item) {
        return item >= min && item < max;
    });
}

console.log(filterInRange(arr, 120, 131).sort()); // [120,124,126,128,128,130]

3
使用如下方式使用map
$.map(a,function(o,i){  if(o < 130 && o > 120) return o; })

2
  1. 问题中没有提到jQuery。
  2. 在这种情况下,你应该建议使用$.grep而不是$.map
- VisioN

1
使用array.prototype.filter()方法来返回一个新数组,其中只包含通过布尔测试的元素。
  function isBigEnough(element) { 
    return element >= 10; } 


  var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);

返回一个新的数组[12, 130, 44]
array.prototype.map()array.prototype.reduce()一起,array.prototype.filter()在JavaScript中使用函数式编程风格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接