var arr=[1500,1200,2000,2100,1800];工资数组,把超过2000的删除这个怎么实现

解决方案 »

  1.   

    使用数组的filter函数,返回值为假时,数据会被过滤掉。arr.filter(function(val){
      return val<=2000;
    });
      

  2.   

    var arr=[1500,1200,2000,2100,3555,1800];
    document.write(arr + "<br />")
    var alen=5;
    for (var i=0;i<alen;i++)
    {
       if (arr[i]>2000)
    {
    arr.splice(i,1)
    i--;
    }
    }

     
    document.write(arr)
      

  3.   

    是的,filter不会改变原数组,只返回你需要的新数组。
    如果是需要改变原数组,要么用原数组变量接收这个返回的新数组:
    arr = arr.filter(function(val){  return val<=2000;});
    要么循环数组,然后用splice方法删除,也是可以的:
    for(var i = 0; i < arr.length; i++){
        if(arr[i] > 2000){
             arr.splice(i--, 1);//由于这个元素删除了,所以序号需要减一,确保全部遍历到
        }
    }
      

  4.   

    是的,filter不会改变原数组,只返回你需要的新数组。
    如果是需要改变原数组,要么用原数组变量接收这个返回的新数组:
    arr = arr.filter(function(val){  return val<=2000;});
    要么循环数组,然后用splice方法删除,也是可以的:
    for(var i = 0; i < arr.length; i++){
        if(arr[i] > 2000){
             arr.splice(i--, 1);//由于这个元素删除了,所以序号需要减一,确保全部遍历到
        }
    }
    感觉这样操作不太安全,容易越界,直接用新数组覆盖掉旧数组就好了
      

  5.   

    function getSmall(num,arr){
    var temp = [];
    for (var i in arr) {
    if(arr[i] < num){
    temp.push(arr[i]);
    }
    }
    return temp;
    }