移除数组中的元素

发布于 2022-09-01 15:24:00 字数 518 浏览 10 评论 0

题目描述

移除数组 arr 中的所有值与 item 相等的元素,请直接在给定的 arr 数组上进行操作
输入例子:
removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)

输出例子:
[1, 3, 4]

本人的解法:
var arr=[2,1,2,3,4,2,2];
var arr1=[];
var item=2;
var len=arr.length;
for(var i=0;i<len;i++){
if(!(arr[i]===item)){
arr1.push(arr[i]);
}
}
arr=arr1;

 document.write(arr);

还有没有其他的办法,不用创建新的数组,直接在原数组上删除,原数组的元素。求大神解答

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

拔了角的鹿 2022-09-08 15:24:00

一般从原数据移动元素,都从后往前查找(因为删除元素之后后面的序号会变)

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

var arr = [2, 1, 2, 3, 4, 2, 2];
console.log(remove(arr, 2));

输出

[1, 3, 4]

补充 filter 方法

今天有人赞,顺着消息过来了,然后想起还有个更简单的办法

用的 es6 语法,但是可以用 function 代替 Lambda 用在 es5,

var arr = [2, 1, 2, 3, 4, 2, 2];
const newOne = arr.filter(item => item !== 2);
// 上面 newOne 是创建了个新数组
// 下面的操作是把新数据的内容插入到原数组去,造成原数组的变化
// 清空并重新加入
arr.length = 0;
arr.push.apply(arr, newOne);
console.log(arr);

不过严格的说这不是从原数组移除,是建了个不包含指定数据的新数组。
但是为了达到直接改变原数组的要求,又将原数组清空,从新数组把元素添加进去了。

浪推晚风 2022-09-08 15:24:00

arr1=arr.filter(function(i){return i!=2})//没注意,要在原数组删除。。。

横笛休吹塞上声 2022-09-08 15:24:00
function remove(arr, item) {
    for (var i = arr.length - 1; i >= 0; i--) {
        if (arr[i] === item) {
            arr.splice(i, 1);
            return arr;
        }
    }
}

var arr = [2, 1, 2, 3, 4, 2, 2];
console.log(remove(arr, 2));

@边城 优化了一下 哈哈

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文