js移除数组中元素-- 倒着遍历数组,绕过改变下标的问题

编程题:移除数组中的元素(JS实现) JS编程题:移除数组中的元素 阅读详情

题目描述
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
示例1
输入

[1, 2, 2, 3, 4, 2, 2], 2
输出

[1, 3, 4]

我一开始还好死不死用的foreach,忽略了改变数组之后,下标也改变的情况,正好被改的那个index上的元素就遍历不到了。后来用for来控制index –,代码如下:

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

但后来看到一个更好的,不用动下标,直接倒着遍历。

链接:https://www.nowcoder.com/questionTerminal/a93dd26ebb8c425d844acc17bcce9411
来源:牛客网

function removeWithoutCopy(arr, item) {
  for(var i = arr.length-1;i >= 0;i--){
      var value = arr[i];
      if(value == item){
          arr.splice(i,1);
      }
  }
    return arr;
 }
【算法】奇妙双指针移除数组元素 对应力扣 27,移除元素,如何使用双指针来实现所需元素的移除 阅读详情

相关推荐

微信小游戏审核避坑指南:如何一次性通过微信审核(附最新审核要求)

本文详细解析微信小游戏审核全流程,提供从开发到上线的关键策略,帮助开发者一次性通过审核。涵盖合规性自查、材料优化、开发环境配置、版本管理、审核材料填写技巧等核心内容,并附最新审核要求和常见驳回问题解决方案,显著提升审核通过率。

weixin_28454475的博客 1402

js数组循环删除,数组下标已经发生改变的解决方法(逆向删除)

// 问题: 假设有一个数组 arr [a,b,c,d,e] ,想把 c 和 d 从数组删除 // 解决方法: 循环数组,再用 splice 方法删除 , 删除c的时候会发现数组的下标已经发生改变,其实这样是不对的,应该使用逆向循环的思维进行删除,这样就可以实现数组的循环删除了。 for (var i = arr.length - 1; i >= 0; i--) { if (...

一只头没秃的前端菜菜 2329

restbed编译笔记

Restbed 可以构建出基于asio库的restfulAPI服务,Restbed 4.7版本使用了1.12.0版本的asio(其他版本编译不通过),可直接访问github下载:https://github.com/chriskohlhoff/asio/tree/asio-1-12-0。另外Restbed还依赖openssl库(可直接下载exe的安装包,安装后取出lib库及头文件放到到restbed\dependency\openssl中即可,https://slproweb.com/download/W.

mahong100的博客 2106

js循环删除数组元素,解决导致因为下标变化出现问题

js中遍历循环删除符合条件的元素,从后往前循环,因为从前往后循环删除了某个元素后下标会发生变化下标前移,影响后边的元素循环; 解决:改用从后往前循环,不会影响前边元素下标的改变 var index = selectRows.length; while(index--){ if (selectRows[index].fatherId == "property"){ selectRows.splice(index,1); } } ...

linkunpeng_的博客 2309

2022网安保研经验帖

2022网安保研经验

fumingxiaoshen的博客 4893

2024最新版Anaconda Navigator安装使用指南

本文简要介绍如何下载安装Anaconda Navigator最新版,以及如何使用Python内核搭载来完成应用程序开发。

jackson_lingua的博客 1万+

js中删除数组中的某一元素(无下标时)

1、使用filter数组去重; var arr1 = [1,2,3,4,5,6];//待操作数组 var j = 2;//待删除元素 var noRepeat = function(arr1,arr2){ return arr1.flter(function(e){ return arr2.indexOf(e); }) }; var arr2 = []; arr2.pus

u013084331的博客 2502

Qt Creator配置MSVC编译环境、调试环境

获取和安装:cdb.exe 在 Debugging tools for Windows 中,而现在已经不单独提供下载,只在Windows SDK 或者Windows Driver Kit里面包含 所以需要下载微软的调试工具,最少需要下载 Windows SDK。在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用,以下是配置方案。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6986

js 删除数组的操作说明

js删除数组,会有下标左移的问题。这时候处理就需要逆向删除。先删除右边的不影响左边的下标。如下直接上代码: let chooseRouter=(datas) => { let router_arr = JSON.parse(JSON.stringify(routers)); //删除没选择的子节点 let interator = (routers) => { for (let i = routers.length - 1; i >= 0; i--) {

qq_24745557的博客 467

在Open3D中从网格中采样点云

在本文中,我们将学习如何使用Open3D从网格中采样点云。点云采样是点云处理的重要步骤之一,能够为后续的任务提供必要的输入。通过这些示例代码,我们可以很容易地使用Open3D库从网格模型中采样点云。值得注意的是,根据实际应用需求,我们可以调整采样点的数量和采样方法来满足不同的场景需求。除了使用Poisson Disk算法,Open3D还提供了其他的点云采样方法,如Uniform采样和Random采样。这个函数使用了Poisson Disk采样算法,可以在保持点云均匀性的同时,尽可能避免重叠点的生成。

FxRuby的博客 412

【实战圣经】YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

m0_71589036的博客 251

JS遍历数组并删除元素的几种方法

【代码】JS遍历数组并删除元素的几种方法。

weixin_45626937的博客 900

AUTOSAR OS详细介绍及配置说明(更新版20240115)

AUTOSAR OS扩展了OSEK/VDX标准中的操作系统,所以本文结合OSEK/VDX的标准来介绍AUTOSAR OS,并借助Vector Configurator讲解AUTOSAR OS的配置。源于德语,英文意思是:“车载电子设备的开发系统和接口”,它是一个标准,用来产生嵌入式操作系统的规范,通讯协议栈,和汽车网络管理协议,也产生其他相关的规范。OSEK被设计来提供整车的各种电子控制单元的软件标准架构。

酒无忧的博客 1421

js删除数组中元素,改变下标问题

js删除数组中元素,改变下标问题 js删除数组中元素,改变下标问题 方法一: 使用标识flag for(var i=0,flag=true,len=this.fuzzyQueryList.length;i<len;flag ? i++ : i){ if(fatherName == list.fatherName && name == list.name) { thi...

ya_nan_zhang的博客 2639

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

js遍历数组,移除某个元素

js遍历数组,移除某个元素 /** * 有效的方式 - 改变下标,控制遍历 */ for (var i = 0; i &amp;lt; arr.length; i++) {   if (...) {     arr.splice(i, 1); // 将使后面的元素依次前移,数组长度减1     i--; // 如果不减,将漏掉一个元素   } } /** * 无效的方式 - for .. in 无...

MtangEr的博客 7160

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JS数组移除元素的方法

JS数组移除元素的方法

m0_44968817的博客 5071

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Leetcode数组篇—javascript实现移除元素

Leetcode数组篇—javascript实现移除元素   

道阻且长 1939

WEB应用之: JS 数组的遍历与元素删除

一. 引子 今天遇到个问题,如何在遍历数组的同时动态地删除元素。接下来我将试图从遍历和删除两个方面做出代码解释并最终分析效率问题。 二. 遍历数组 先来看看示例数组。 var a1 = []; a1[1] = 'aa'; a1[5] = 'bb'; console.log(a1.length);//6 方式一,用6次循环遍历 a1 中仅有的两个数据,四次输出 var l1 = a1.l

yaozhiyi的专栏 1万+

3. JS编程之移除数组中的元素

题目描述 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组 输入 [1, 2, 3, 4, 2], 2 输出 [1, 3, 4] 方法一 新建一个空数组,利用for循环遍历数组,判断数组成员与item是否相等,将不相等的成员pus进新数组。 function remove(arr, item) { var newArr = []; for(let i=0; i<arr.length; i++){ if(arr[i]!=

qq_37754050的博客 393

js循环中删除数组中的某个元素

(1)使用js中的splice方法循环删除数组中某个值 eg: var arr=new Array(); arr.push(1); arr.push(2); arr.push(3); arr.push(4); arr.push(5); arr.push(6); arr.push(7); ...

web全栈开发的博客 3453

js第3章数组 课后习题——移出数组arr([1,2,3,4,2,5,6,2,7,2])中与2相等的元素,并生成一个新数组,不改变原数组

填空题 表达式“[a, b] = [12, 34, 56]”执行后,变量b的值为__34____。 表达式“[1, 2, '1', '2'].lastIndexOf('1', 1)”的返回值是___-1___。 判断题 被delete关键字删除的数组元素值,该元素依然占用一个空的存储位置。( √) 表达式“['haha','xixi'].splice(4, 2)”的返回值是['haha','xixi']。( ×) 表达式“Array.isArray('0')”的返回值是false。( √) ...

WHT869706733的博客 8356

解决vue遍历移除数组元素 时,数据出错,下标不匹配,$nextTick

vue双向数据绑定,删除数组元素的时候 已经不是原数组了,数组下标变化但循环还是在继续 this.$this.$nextTick(() => {(() => {}) Vue的官方文档中详细解释: Vue 异步执行 DOM 更新。只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种...

m0_37394102的博客 2813

Javascript根据指定下标或对象删除数组元素

/** *删除数组指定下标或指定对象 */ Array.prototype.remove=function(obj){ for(vari =0;i <this.length;i++){ vartemp =this[i]; if(!isNaN(obj)){ temp=i; } if(temp == obj){ for(varj = i;j <this...

WODE1102的博客 1322

js 根据下标移除数组数据

/** *删除数组指定下标或指定对象 */ Array.prototype.remove=function(obj){ for(var i =0;i &lt;this.length;i++){ var temp = this[i]; if(!isNaN(obj)){ temp=i; } if(temp == obj){ for(var j = i;j &lt;this.leng...

y1s2y3的博客 4112

数组移除某个相等的元素

在日常工作中,大家或许会遇到后台返回数组列表,有些是我们不需要的,这样就需要我们自己来操作获取符合的数据。 模拟下上面的需求, 去除arr[1,2,3,4,2] 中的所有值与 item 2 相等的元素。思路: 判断当前元素是否存在函数中,并获取下标,删除当前下标的元素example: function remove(arr, item) { arr.for...

weixin_33889245的博客 758

javascript在数组的循环中删除元素

在开发JavaScript应用的过程中,经常会遇到在循环中移除指定元素的需求。 按照常规的思路,就是对数组进行一个for循环,然后在循环里面进行if判断,在判断中删除掉指定元素即可。 但是实际情况往往不会像预想的那样顺利运行。 出现的问题场景还原 (function () { var arr = [1, 2, 2, 3, 4, 5]; for (var i...

weixin_30470857的博客 965
上一篇: node js 下查找数组最大最小值 时间复杂度 1.5N 思路来自编程之美
下一篇: arguments 向array转化中 需要注意的一个小细节
十方魔
博客等级 码龄10年 202粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值