如何过滤大于x的数组值

时间:2015-11-18 05:51:21

标签: javascript html arrays

我一直在互联网上四处寻找,但我找不到任何有关如何解决此问题的帖子,即使我确信这是一个非常简单的修复。

基本上我有一个数字值的数组,我想过滤掉任何大于10的数字并将它们添加到另一个数组中。这是我到目前为止所得到的,但我得到的是第一个数组中的所有数字。

<!DOCTYPE html>
<html>
<body>
  <p id="demo"></p>
  <button type="button" onclick="alert(output)">Click Me!</button>
  <script>
    var input = new Array(9,3,4.3,24,54,8,19,23,46,87,3.14);
    var output = new Array();
    var length = 1;
    for (var i = 0; i < input.length; i += length) {
      output.push(input.slice(i, i + length).join(" "));
    }
  </script>
</body>
</html>

4 个答案:

答案 0 :(得分:5)

function predicate(x) { return x > 10 }
var output = input.filter(predicate);
input = input.filter(function(x) { return !predicate(x) })

使用ES6箭头功能看起来更干净:

var predicate = (x) => x > 10;
var output = input.filter(predicate);
input = input.filter(x => !predicate(x));

答案 1 :(得分:0)

我相信你正在寻找这样的东西。

var input = new Array(9,3,4.3,24,54,8,19,23,46,87,3.14);

var newArray = new Array();
input.forEach(function(number){
    if(number > 10)
    {
        newArray.push(number);
    }
});

答案 2 :(得分:0)

    <!DOCTYPE html>
    <html>
    <body>

    <p id="demo"></p>

    <button type="button" onclick="alert(output)">Click Me!</button>
    <script>
    var input = new Array(9,3,4.3,24,54,8,19,23,46,87,3.14);
    var output = new Array();
    for (var i = 0; i < input.length; i ++) {
    if(input[i] > 10)
    {
    output.push(input[i]);
    }
    }


    </script>


    </body>
    </html>

答案 3 :(得分:0)

尝试使用Array.prototype.sort()Array.prototype.filter()

&#13;
&#13;
var input = new Array(9,3,4.3,24,54,8,19,23,46,87,3.14);
var output = new Array();

input = input.sort(function(a, b) {
  return a - b
}).filter(function(val, key) {
  return val < 10 ? val : output.push(val) && null
})

console.log(input, output);
&#13;
&#13;
&#13;