前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法-原地删除数组元素

算法-原地删除数组元素

作者头像
OBKoro1
发布2020-10-27 11:55:49
9190
发布2020-10-27 11:55:49
举报

原地删除数组元素

难度:简单

描述:

给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。

元素的顺序可以改变,并且对新的数组不会有影响。

样例:

给出一个数组 [0,4,4,0,0,2,4,4],和值 4

返回 4 并且 4 个元素的新数组为[0,0,0,2]

代码模板:

代码语言:javascript
复制
const removeElement = (arr, ele) => {};

想一想再看答案

想一想再看答案

想一想再看答案

代码:

  1. 保存遍历次数,匹配元素,然后删除

切勿直接使用数组的length属性,因为被删除后length属性会减少,导致遍历提前结束,删除不彻底。

代码语言:javascript
复制
const removeElement = (arr, ele) => {
  let num = arr.length; // 保存遍历的次数
  for (let index = 0; index < num; index++) {
    let find = arr.indexOf(ele);
    if (find !== -1) {
      arr.splice(find, 1); // 原地删除
    } else {
      return arr.length; // 找不到即退出
    }
  }
};
  1. 遍历数组,匹配元素,赋值为null/undefined,再过滤掉
代码语言:javascript
复制
const removeElement = (arr, ele) => {
  for (let index of arr.keys()) {
    let find = arr.indexOf(ele);
    if (find !== -1) {
      arr[find] = null;
    } else {
      return arr.filter(x => x).length; // 将假值过滤掉
    }
  }
};
  1. 直接过滤

在写出上个方法之后,想到可以直接过滤掉,最简洁。但还是把另外两个方法放上来,当个思路参考一下!

代码语言:javascript
复制
const removeElement = (arr, ele) => {
  return arr.filter(x => x !== ele).length; // 使用过滤将值不等于ele的直接过滤出来,返回长度
};

鼓励我一下:

觉得还不错的话,给我的项目点个star吧

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OBKoro1前端进阶积累 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原地删除数组元素
    • 难度:简单
      • 描述:
        • 样例:
          • 代码模板:
            • 想一想再看答案
              • 想一想再看答案
                • 想一想再看答案
                  • 代码:
                    • 鼓励我一下:
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档