·

JavaScript中数组元素删除的八种方法汇总

发布时间:2024-08-28 17:21:32阅读量:93
专业文章
转载请注明来源

在JavaScript中,Array类型是非常常用的类型。与其他语言的数组不同,JavaScript给Array数组提供了大量的方法,因此在JavaScript中,对数组进行操作其实非常灵活。在本文中,我总结了一下JavaScript中Array删除的方法。

一、length

JavaScript中Array的length属性非常有特点一一它不是只读的。因此,通过设置这个属性可以从数组的末尾移除项或添加新项,请看下面例子:

//移除元素
var arr=[1,2,3,4];   //创建一个包含4个数字的数组
arr.length = 2;
console.log(arr);  //[1, 2]

//添加元素
var arr=[1,2,3,4];   //创建一个包含4个数字的数组
arr.length = 5;
console.log(arr);  //[1, 2, 3, 4, undefined]
console.log(arr[4]) //undefined

二、delete关键字

JavaScript本身的delete关键字,可以用来删除(清除)数组元素。

var arr = [1, 2, 3, 4];
delete arr[0];

console.log(arr);   //[undefined, 2, 3, 4]

可以看出来,delete删除之后数组长度不变,只是被删除元素被置为undefined了。

三、pop()方法

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

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

四、shift()方法

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

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

五、splice()方法

splice()恐怕要算最强大的数组方法了,他的用法有很多种,在此只介绍删除数组元素的方法。在删除数组元素的时候,它可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除的项数,例如splice(0, 2)会删除数组中的前两项。

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

可以看出来,splice()方法会改变原数组。

六、slice() 方法

slice () 方法可从已有的数组中返回选定的元素,并且不会改变原数组。

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

七、迭代方法

所谓的迭代方法,就是用循环迭代数组元素,发现符合条件要删除的项则删除。用的最多的地方可能是数组中的元素为对象的时候,根据对象的属性例如ID等等来删除数组元素。下面介绍两种方法:

1. for循环

let index = 3, // 删除的id
let arr = [1,2,3,4,5],
let newArr = [];

for (let i = 0; i < arr.length; i++) {
    if (i !== index) {
        newArr.push(arr[i])
    }
}

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

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

2. filter()方法

var arr = [1, 2, 3, 4];
arr = arr.filter(x=>x!=2)    //[1, 3, 4]

八、Set()方法

var arr = [1, 2, 3, 4];
let newSet = new Set(arr)    //{1, 2, 3, 4}
newSet.delete(1)
let newArr = [...newSet]    // newArr => [2, 3, 4]


评论区

暂无评论,来发布第一条评论吧!

弦圈热门内容

正弦函数的幂级数展开是否是柯西序列?

考虑正弦函数的幂级数展开$$S=(\sum_{i=0}^{j}\frac{(-1)^{i}}{(2i+1)!}r^{2i+1})_{i\in\mathbb{N}}, 0\leq r\leq2\pi。$$那么$S$是否是柯西序列?令$\varepsilon&gt;0$。是否存在$N&gt;0$使得对于任意$m,n\geq N$,都有$$\left|\sum_{j=n}^{m}\frac{(-1)^{j}}{(2j+1)!}r^{2j+1}\right|\leq\sum_{j=n}^{m}\frac{1}{(2j+1)!}r^{2j+1}&lt;\varepsilon?$$证明1:众所周知,$\sin x$的幂级数展开在任意地方都是收敛的(你可以使用比值审敛法来证明这个结论),然后所有收敛数列都是柯西的,因此$S$是柯西序列。证明2:既然这是研究一个紧致集里的级数,最简单的方法是用下面的不等式:$$\sum_{j=n}^{m}\frac{1}{(2j+1)!}r^{2j+1}\leq\sum_{j=n}^{m}\frac{1}{(2j+1)!}(2\pi)^{2j+1}&lt;\varep ...

阿基米德性质的乘法形式

我的提问:令$(\Gamma,+,\leq)$为一个有序阿贝尔群。我们知道阿基米德性质可以表述为:对所有$a,b\in\Gamma$,如果$a&gt;0,b\geq0$,则存在$n\geq0$使得$b\leq na$。然而如果我们考虑乘法的情况,即有序阿贝尔群是$(\Gamma,\cdot,\leq)$。是否存在乘法形式的阿基米德性质?我认为存在。并且我对它的描述如下:对于所有$a,b\in\Gamma$,如果$b&lt;1,a\leq1$,则存在$n\geq0$使得$b^{n}\leq a$。这是正确的吗?实际上,我没能证明它等价于$\Gamma$有凸秩1。回答:你正确地叙述了阿基米德性质的乘法版本。令$\Gamma$为一个满足阿基米德性质的有序乘法群。假设$H$是$\Gamma$的一个凸子群,且满足$H\ne \{1\}$。令$1\ne x\in H$。然后有$\{x,x^{-1}\}\subset H$,且$\{x,x^{-1}\}$中的一个成员是$&gt;1$。因此,不失一般性,令$1&lt;x\in H$。(i). 如果$1\le y\in\Gamma$,存在$n\in \B ...

高智商与心理疾病仅“一墙之隔”?

“从天才到疯子,仅有一步之遥。”这是英国诗人约翰·德莱顿的一句名言。世界上许多有才华的人都与精神疾病沾边,这让科学家对这个问题很有兴趣。一直以来,他们都想找到一个答案,高智商与心理疾病之间是否存在一定的相关性?最近,克里蒙特学院联盟培泽学院的科学家在心理学期刊Intelligent发表了一项研究成果,他们发现,高智商人群罹患焦虑、抑郁、自闭等症状的比例要高于普通大众。高智商与精神疾病这项研究的样本比较特别,培泽学院的科学家选择了3715名门萨俱乐部成员,测试他们的精神健康。门萨俱乐部是世界顶级智商社团组织,目前它的会员遍及全球100多个国家和地区,人数高达十几万,智商均在130以上。但是,测试结果显示,其中约有20%的会员患有抑郁症和焦虑症,而在普通人群中,这一比例只有10%。不仅如此,他们还发现,门萨会员似乎也更容易患哮喘、过敏和免疫力底下等疾病。他们试图回答一个问题,高智商是否会加剧心理反应进而影响身体的免疫水平?根据《每日邮报》的报道,研究人员的解释是,高智商人群之所以患精神疾病的比例更高,也许是因为他们过于亢奋、敏感,导致情绪失调。而已有的科学研究认为,心理问题可能引发身体的炎 ...

吴宝珠:不要浪费时间写糟糕的论文,一篇好论文胜过一百篇垃圾论文

吴宝珠1972年出生于越南一个学者家庭,15岁时进入越南国立河内大学附属高中的数学专修班,1988年和1989年,他连续两届参加国际奥林匹克数学竞赛,获两枚金牌。他在法国完成大学学习,在博士研究生阶段开始研究朗兰兹纲领;2008年,他证明了朗兰兹纲领的基本引理。朗兰兹纲领由加拿大裔美国数学家罗伯特·朗兰兹(Robert Langlands)发起。1979年,朗兰兹提出一项雄心勃勃的革命性理论:将数学中两大分支——数论和表示论联系起来,其中包含一系列的猜想和洞见,最终发展出“朗兰兹纲领”。朗兰兹认为,纲领的证明需要几代人的努力,但他相信证明纲领的前提需要一个基石——基本引理,而且这个证明应该比较容易。然而,基本引理的证明实在是太难了,直到29年后,2008年,年轻的吴宝珠才用自己天才的方法,将之证明。2009年,美国《时代》周刊将基本引理的证明列为年度十大科学发现之一。2010年9月1日,吴宝珠成为美国芝加哥大学的正教授。前段时间,应哈佛大学数学教授、清华大学数学科学中心主任丘成桐邀请,吴宝珠到北京作为期一周的学术访问,其间,他接受了《科学时报》记者采访,谈及自己的数学之路。在越南展露数 ...

说过多少遍不要All in AI!初创公司没有一个产生现金流的业务就搞AI无异于在裸泳

这段时间是AI大火的时期,企业之间大模型的竞争已经进入白热化阶段,很多初创公司也相继涌入了AI大模型赛道。不少人争相加入AI赛道的原因,是相信,这将会是一场新的工业革命,或者说这相当于上次的互联网革命。这里我并不否认这种观点,而是想指出,现在没人真的能确定这场AI大热是否真的能产生堪比工业革命的收益。如果商业化落地成功,且能满足大量的市场需求从而能产生大量的利润,才能说这或许是一场工业革命。而且换位思考一下,如果你确定这是次巨大的机缘,那为什么要公之于众呢?不仅公之于众还要大肆宣扬,生怕有人不知道,这正常吗?是不是跟股市一样,大喊着“牛市”了,要涨了,然后一堆韭菜入局。目前来看,AI的局势还处在混沌摸索之中,绝大多数人的钱注定会打水漂,已经有大量的AI公司倒下了。讽刺的是,有些通过AI热赚到钱的,反而是卖课割韭菜的。然后关于目前的行情,从明星AI创业公司的动向,也能看出一二,不少明星创业公司选择卖身,或者创始团队分崩离析,还有创始人流下烂摊子直接跑路的。就连最大的OpenAI如今创始人团队都走光了。连明星创业公司都如此,如果你这时候选择All in AI,你想想那失败的风险有多大,就跟 ...