·

JS删除数组的几种方式

Published at 2024-08-28 17:55:02Viewed 203 times
Professional article
Please reprint with source link

JavaScript中数组元素删除的八种方法汇总这篇文章中,我们总结了八种数组删除的JS方法,下面我们将他们应用于具体场景中,更好的说明JS中如何删除数组元素。

一、删除第一个元素

1、shift() 方法

调用shift()方法可以把数组的第一个元素删除,并返回第一个元素的值。

注意: 此方法改变数组的长度!

提示: 移除数组末尾的元素可以使用 pop() 方法。

var arr = [1, 2, 3, 4]
arr.shift()  // 1
// arr => [2, 3, 4]

2、slice() 方法

slice() 方法可从已有的数组中返回选定的元素。

slice() 方法不仅可以用于数组,还能用于字符串。slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

注意: slice() 方法不会改变原始数组。

var arr = [1,2,3,4]
var newArr = arr.slice(1)
// arr => [1,2,3,4]
// newArr => [2,3,4]

3、splice() 方法

splice() 方法用于添加或删除数组中的元素。

注意:这种方法会改变原始数组。

如果删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组

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

二、删除最后一个元素

1、pop() 方法

调用pop()方法会删除数组最后一个元素,并返回删除的元素。

注意:此方法改变原数组!

提示: 移除数组第一个元素,请使用 shift() 方法。

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

2、slice() 方法

var arr = [1,2,3,4]
var newArr = arr.slice(0, arr.length - 1)
// arr => [1,2,3,4]
// newArr => [1,2,3]

3、 splice() 方法

var arr = [1,2,3,4]
var newArr = arr.splice(arr.length - 1, 1)
// arr => [1, 2, 3]
// newArr => [4]

三、删除数组中某个指定下标的元素

1、splice 删除

let index = 3

let arr = [1,2,3,4,5]

 arr.splice(index, 1) // [4]

// arr => [1,2,3,5]

2、for循环push删除

通过循环遍历数组,将符合条件的元素push到新的数组中

let index = 3, // 删除的id

let arr = [1,2,3,4,5],

let arrLen = arr.length,

let newArr = [];

for (let i = 0; i < arrLen; i++) {

    if (i !== index) {

        newArr.push(arr[i])

    }

}  

// arr => [1,2,3,4,5]

// newArr => [1,2,3,5]

3、for循环splice删除

通过循环遍历数组,使用splice()方法将符合条件的元素删除

let index = 3 // 删除的id

var arr = [1,2,3,4,5]

arr.forEach(function(item, i) {
    if(i == index) {
        arr.splice(i, 1);
    }
});

// arr => [1, 2, 3, 5]

4、delete删除

JavaScript提供了一个delete关键字用来删除(清除)数组元素。

要注意的是,使用delete删除元素之后数组长度不变,只是被删除元素被置为undefined了。遍历直接跳过undefined

let index = 3

let arr = [1,2,3,4,5]

delete arr[index]

// arr  = > [1, 2, 3, undefined, 5]

四、删除数组中某个指定元素

1、splice 删除

let value = 'b',

let arr = ['a','b','c','d']



arr.splice(arr.indexOf(value), 1) // ['b']

// arr => ['a','c','d']

2、filter 删除

let arr = ['a','b','c','d'],
let value = 'b'
arr = arr.filter(item => item != value)
// arr => ['a','c','d']

3、for 删除

let value = 'b',

let arr = ['a','b','c','d'],

let arrLen = arr.length,

let newArr = []

for (let i = 0; i < arrLen; i++) {

    if (arr[i] !== value) {

        newArr.push(arr[i])

    }

}  

// 其他forEach、map、for of循环同理

4、Set 删除

let arr = ['a','b','c','d'],

let  value = 'b'

let newSet = new Set(arr)

newSet.delete(value)

let newArr = [...newSet]

// newArr => ['a','c','d']


0 人喜欢

Comments

There is no comment, let's add the first one.

弦圈热门内容

大一上挂科后果严重吗?

知乎提问:大一上挂科后果严重吗?我的回答:还真问题不大,我大一的时候身边就有不少同学挂科了,结果无非是补考,或者严重点的重修,最后都能过。我大一大二的时候也是对挂科害怕不已,每次考前复习都十分紧张。直到后来快毕业的时候,我得知自己居然缺了通识课学分不能发毕业证,而我身边那些挂过科的同学全都学分修够了。那时候我才明白没啥好怕的。。。当然最后那个学分还是补上了,虚惊一场。后面我打算在 数学故事天地 写一篇因为沉迷数学导致挂科而大学无法毕业的小说,虽然我文笔不行,但是我有足够的想象力,只要我把逻辑、故事线、设定全写出来,一样会是丰富的故事内容,只不过细节描写没那么动人、生动。希尔伯特也曾经说过,数学家拥有足够丰富的想象力,完全可以当一个作家。原话我现在在网上已经找不着了,只找到了下面这句话"You know, for a mathematician, he did not have enough imagination. But he has become a poet and now he is fine." &nbsp;——David Hilbert“他曾没有足够的想象力来当数学家。不过 ...

洛必达法则为何成为禁术?

知乎提问:如题,高考用会扣分,大学微积分考试还明令禁止使用洛必达法则(我个人还是好喜欢洛必达法则)疑惑产生于大一半期考试之前,刚刚学极限没多久的时候。为了让学生更好地理解“极限”这个概念,学校用心良苦,在半期考试中ban了洛必达,仅此而已。我的回答:因为洛必达法则并不是洛必达发现的,而是洛必达买下来的😇。说到洛必达法则,我的回忆就倒回到初三和高中时期,当时做高等数学的极限题我都喜欢直接洛必达法则,我不太想考虑除了洛必达还有什么别的计算方法,没必要。因为洛必达法则明显更加友好,反而更加容易让学生熟练掌握极限,我初三乃至高中的时候,学高等数学能学懂,其中就少不了洛必达法则的功劳。其实多用几次洛必达法则感觉上来了,再去理解极限的本质,也不是不可以。只能说国内的这种教育模式非常的按部就班,就必须你按照学校指定的路径来学习,真的就流水线工厂一样,教育被整成这样,教育出来的人自然也很难有创新思维。这只是普通的通过性考试,完全没必要考虑所谓的公平性问题。就好比,初三的时候自学了高中的正弦定理、余弦定理,或者,高三的时候自学了洛必达法则、级数等微积分的东西,可以很轻松的解决某些题目。这种还勉强能狡辩一 ...

今天晚上弦圈服务器发生崩溃情况,已一切正常莫慌,目前判断是腾讯云的问题

之前我对弦圈进行了优化最近有人反馈网站卡、打不开,我自己也试过这种情况,已再次对弦圈进行优化,接着弦圈基本上就没有再出现过问题,网站浏览也很流畅。不过今天晚上前端服务器突然崩了,我发现后马上对服务器进行了重启,重启过程持续了5-10分钟左右吧,真慢。然后又发现了一点问题,就暂时用后端服务器顶替了,之后前端弄好了又重新用回原来的服务器。在这个过程中因为重启了(edge one)CDN,导致https访问会弹出证书不安全的情况,现在也全部正常了。根据我跟其他人的交流得知,他在东京的服务器前几天也突然崩了,崩的原因也是摸不着头脑的IO读写,然后我咨询客服他也没看到异常。我就一个前端服务器,2核4G就放前端代码,怎么可能会是业务问题。然后网站被黑客疯狂扫描,一直都有但也不至于弄崩服务器,目前判断可能是腾讯云自己的问题。

GTM023 W.H.Greub线性代数经典教材:Linear Algebra

这本教材是我高中时期入门线性代数的主要教材,我的很多基础知识都来源于这本书,如今看回这本书可以说满满的回忆。这本书可以说,是我读过的内容最为全面且完备的线性代数教材了。而且它的语言风格非常的代数化,没有什么直观可言,以抽象为主,表述简练、知识密度高。总之,真的太对我的胃口了,我当时是挺喜欢看这本书。这本教材跟其他线性代数教材一样,先从最基本的向量空间开始讲起,但不同的是,它这里还应用了群论的知识。紧接着这本书以代数抽象的形式讲矩阵和行列式,尤其是行列式,书中的描述直达其代数本质,这是我当时印象挺深刻的。接着书本还继续往外拓展,讲到与向量空间相关的一些概念,如泛函分析中的内积空间,同调代数中的代数和同调。总之,这本书对初学者有一点小门槛,适合喜欢挑战难度、喜欢看高水平读物的初学者看。PS:作者不再提供附件下载。

QQ频道AI视频泛滥?未来互联网上会充斥着AI生成的垃圾视频吗?

QQ这段时间感觉AI视频比以前多了,而且更主要是现在QQ还给AI视频推流了,可以说举措完全跟其他平台不同。以往QQ上的AI视频,基本上都是没流量的,现在给流量扶持,势必会导致AI视频进一步泛滥。其他平台像知乎、公众号、推特,发AI生成的内容,其实是会直接限流的。昨天我在知乎上发一篇AI生成的小说,创作声明了AI写的,结果直接零流量,阅读量1应该就是我自己吧。而在推特上发东西,如果用Gemini修改你自己写的语句,发上去也会被限流。小红书我没试过,之前看那种AI美女的笔记也挺泛滥的,不过后来我举报过以后就基本没看到了,也不知道是不是算法问题,还是小红书算法更新了。总之,小红书也是不鼓励AI生成的。说实话就没几个平台真的会鼓励AI生成的内容,只有极少数幸运儿会得到流量,毕竟说实话绝大多数AI内容都惨不忍睹,我其中最讨厌的就是那种AI美女图片,现在还多了视频,真的恶心,关键是居然还有人会看?尤其是QQ视频,之前还不给AI内容推流,现在直接开始推流了,更加惨不忍睹,关键是还不少人评论互动。如果是我,肯定直接不点,流量都懒得给它。AI视频如果仅仅只是整活那种,那还勉强能接受,但是我更喜欢那种混剪 ...

我开发的宇宙级APP竟然成为了其他世界的系统

陈木是弦圈一名默默无闻的全栈程序员,他每天身兼多职,任劳任怨地工作,既负责网站前端的开发与维护,又得兼顾后端的开发与维护。前段时间,陈木又接到了新的任务,要求他负责弦圈APP相关的开发工作 计划开发弦圈的桌面端版和APP版。于是,陈木在挑选了众多技术与框架后,选择了使用Universal React Native Pro Max进行APP的开发,这是一个近期在全世界都很火的框架。Universal React Native是基于传统的React Native通过最新的universal技术[1]进一步迭代升级,从而能达到用React Native语言开发任何东西原生的一个技术框架,而Pro Max则是它的超级升级版,你甚至能用它编程纳米机器人和可控核聚变引擎。开发的日子时间总是过得飞快,眨眼间就过了几万年,陈木头发都秃了,才终于从工作中缓过来。这时陈木也收到放假的通知 弦圈APP先开发到这里......,他松了口气,终于可以放松一下,并开始着手考虑自己一直以来的设想——开发一个宇宙级APP。所谓的宇宙级APP数亿年以来,一直都是各大星域争相竞争的研究对象,指的是通过开发宇宙级API接口 ...