首页 > 试题广场 >

移除数组中的元素

[编程题]移除数组中的元素
  • 热度指数:172094 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组

输入描述:
[1, 2, 3, 4, 2], 2


输出描述:
[1, 3, 4]
示例1

输入

[1, 2, 3, 4, 2], 2

输出

[1, 3, 4]
推荐
题目要求不改变原数组,所以我们可以声明一个数组a用于保存arr中不同于item的值,最后将a返回。
function remove(arr, item) {
     //声明一个新数组保存结果
     var a = [];
     //循环遍历
     for(var i=0; i < arr.length; i++){
         //如果arr[i]不等于item,就加入数组a
         if(arr[i] != item){
             a.push(arr[i]);
         }
     }
     return a;
 }

编辑于 2015-11-14 13:59:27 回复(29)
更多回答
  • <body> <script type="text/javascript"> /*题目描述 *移除数组 arr 中的所有值与 item 相等的元素。 *不要直接修改数组 arr,结果返回新的数组 */ //使用continue跳过 function remove(arr, item) { var newArr = arr.slice(0); var result = []; for(var i=0; i<newArr.length; i++) { if(newArr[i] == item) { continue; } result.push(newArr[i]); } return result; } //使用filter()方法 function remove(arr, item) { var newArr = arr.filter(function(obj, indes, array) { return obj != item; }); return newArr; } //使用splice() function remove(arr, item) { var newArr = arr.slice(0); for(var i=0; i<newArr.length; i++) { if(newArr[i] == item) { newArr.splice(i, 1); } } return newArr; } var arr = [1,2,3,4,2]; var item = 2; console.log(remove(arr, item)); console.log(arr); </script> </body>

编辑于 2016-09-12 19:22:14 回复(3)
function sun(arr,x){
  let newarr = []
   arr.forEach(item => {
     if(item !==x){
        newarr.push(item)
     }
 });
}
发表于 2022-04-02 11:29:08 回复(0)
function remove(arr, item) {
    function isItem(i){
        return i!=item;
    }
    return arr.filter(isItem);
}
发表于 2022-03-12 13:05:59 回复(0)
function remove(arr, item) {
    return arr.filter(t => t !== item)
}
发表于 2021-12-13 20:52:09 回复(0)
function remove(arr, item) {
    let result = arr.concat();
    let index;
    while((index = result.indexOf(item))!== -1){
        result.splice(index, 1);
    }
    return result;
}
发表于 2021-10-21 02:18:45 回复(0)
function remove(arr, item) {
let a = arr.slice(0)
while(a.includes(item)){
    a.splice(a.indexOf(item),1)
}
    return a
}
发表于 2021-05-12 23:24:42 回复(0)
function remove(arr, item) {
    let obj = {};
    for(let i of arr){
        if(i != item){
            obj[i] = "a";
        }
    }
    return Object.keys(obj);
}

发表于 2020-12-15 18:53:22 回复(0)
用arr.slice(0)来确保原数组不被修改,当遇到要删除的元素,用splice方法,第一个参数为当前索引,第二个参数为要删除的个数。注意,后面一定要i--,防止出现连续多个元素需要删除。
function remove(arr, item) {
    var newArr = arr.slice(0);
    for (var i = 0; i < newArr.length; i++) {
        if (newArr[i] === item) {
            newArr.splice(i, 1);
            i--;
        }
    }
    return newArr;
}
发表于 2020-05-03 14:49:02 回复(0)
function remove(arr, item) {
    var a = arr.indexOf(item);
    var arr_1 = arr;
    while(a != -1){
        arr_1.splice(a,1);
        a = arr.indexOf(item);
    }
    return arr_1;
}
求解为什么只通过了66.7%

发表于 2020-03-24 11:45:36 回复(1)
function remove(arr, item) {
    return arr.filter(function(ele) {
        return ele != item;
    })
}

function remove(arr, item) {
    var a = [];
    arr.forEach(function(ele) {
        if(ele != item) {
            a.push(ele);
        }
    });
    return a;
}

function remove(arr, item) {
    var a = arr.slice();
    for(var i = a.length - 1; i >= 0; i--) {
        if(a[i] === item) {
            a.splice(i, 1);
        }
    }
    return a;
}

编辑于 2019-08-08 21:47:15 回复(0)
// 创建新的数组存放与item不同的值
function remove(arr, item) {
    var a = [];
    for(var i = 0;i < arr.length;i++){
        if(arr[i] != item){
            a.push(arr[i]);
        }
    }
    return a;
}
发表于 2019-06-13 19:49:52 回复(0)
function remove(arr, item) {
            var resultArr = [];
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] != item) {
                    resultArr.push(arr[i]);
                }
            }
           return resultArr;
        }
 首先,题目中要求不能修改原数组,所以我们第一个考虑到的就是定义一个新的空数组用来返回结果,之后遍历原数组,找到原数组中与item值不一样的数组元素的值赋值给定义的空数组即可
发表于 2019-06-03 09:43:50 回复(1)
function remove(arr,item){
    var arr1 = [].concat(arr)
    for(var i = 0,len = arr1.length;i < len;i++){
        if(arr1[i] === item){
            arr1.splice(i,1)
        }
    }
    return arr1
}

发表于 2019-04-29 12:37:01 回复(0)
function remove(arr,item){
    var arr1 = arr.slice(0);
    for(var i = 0; i <= arr1.length; i++){
        if(arr1[i] == item ){
            arr1.splice(i,1); // 不能写成arr1 = arr1.splice(i,1)
            i--;  // 感觉重点是这里吧,因为数组变了,位置也会改变,没有这行代码,会直接跳到下一个元素
        }
        
    }
    return arr1;
}
发表于 2019-04-28 11:33:24 回复(0)
不支持箭头函数,,,,,,
发表于 2019-04-07 11:05:23 回复(0)
    function remove(arr, item) {
        if (Array.prototype.filter) {
            return arr.filter(function (v) {
                return v !== item
            })
        } else {
            let v = []
            for (let i = 0; i < arr.length; i++) {
                if (arr[i] !== item) {
                    v.push(arr[i])
                }
            }
            return v
        }
    }
发表于 2018-10-22 10:00:51 回复(0)
function remove(arr, item) {
    var res=[];
    for(var i=0;i<arr.length;i++){
        if (arr[i]!==item){
            res.push(arr[i]);
        }
    }
    return res;
}
发表于 2017-11-21 14:46:33 回复(0)
function remove(arr, item) {     //使用构造函数声明一个新数组
  var newarr = new Array();
   for(var i=0; i<arr.length; i++){
        if(arr[i] !== item){
                  //新数组的length属性正好可以利用来为它添加新元素
            newarr[newarr.length] = arr[i]
        }
    }
    return newarr;
}

编辑于 2017-10-31 21:53:34 回复(0)
function remove(arr, item) {
  if(!(arr instanceof Array)) {
      throw new Error("Type of arr argument isn't a vaild type");
  }
  var tempArr = [];
  for(var i = 0; i < arr.length; i++) {
      if(arr[i] === item) {
          continue;
      }
      else {
          tempArr.push(arr[i]);
      }
  }
  return tempArr;
}
发表于 2017-04-27 11:03:24 回复(2)
function remove(arr, item) {
	var newArr = new Array();
    for(var i=0;i<arr.length;i++){
        var count=0;
        for(var j=0;j<arr.length;j++){
            if(arr[i]===arr[j]){
                count++;
            }
        }
        if(count===1){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

测试通过!

发表于 2017-04-09 20:33:12 回复(0)