JavaScriptJavaScript·

JS删除数组的几种方式

投稿時間:2024-08-28 17:55:02閲覧数:28
専門記事
転載は出所を明記してください

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']


コメント欄

まだコメントがありません。最初のコメントを投稿しましょう!

弦圈热门内容

cover

原创文章被检测为AI创作,AI检测还靠谱吗?

自从GPT火了以后,网络上的AI内容就变得泛滥了,刚开始还能轻松辨别哪些是AI的(一眼AI),哪些是人写的。现在这一两年里,随着生成式AI不断深入人心,AI内容变得更加泛滥了,并且经过这段时间技术的发展,AI生成的内容越来越真假难辨😢😤,有些AI生成的内容需要仔细辨别才能看出端倪。更可怕的是,道高一尺魔高一丈😔🙁,所谓的AI检测技术发展远远比不上AI生成技术的发展。AI生成的内容跟人越来越像,甚至有时候比人写的还要好,而人写的内容呢,相对的也就越来越AI化了😅。因此目前的AI检测会出现把人写的认定为AI写的荒谬事情。这也就意味着潘多拉魔盒已经彻底打开,AI内容与人的内容的界限开始变得模糊,所有的内容都变得真假难辨,恐怕这样下去人会彻底活在虚幻的世界里😭。以下为AI检测的结果我们检测用的是为什么说外国教材好?国外教材与国内教材的区别与 Djano云服务器部署 uwsgi+nginx+https部署这两篇文章。使用GPTZero进行检测,其他检测工具就不列举说明了,感觉用哪个AI检测结果都不会有太大差别。其实是别的AI检测都太不靠谱了😄,Undetectable.ai感觉就无论给它什么结果 ...

[antd: Message] You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.

I'm getting this error when using MessageWarning: [antd: Message] You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.Here is my code:import { message } from 'antd'; export default function Page() { const [messageApi, contextHolder] = message.useMessage(); const res = await fetch("/api/...", { method: "POST", }); if (!res.ok) { messageApi.error("Error! Fail to login!"); } return ( &lt;Home&gt; ... &lt;/Home&gt; ) }

逻辑回归算法介绍

逻辑回归是一种用于二分类和多分类任务的机器学习算法。尽管名字中包含“回归”一词,但它主要用于分类,而不是预测连续值。逻辑回归通过构建一个线性模型,并通过非线性函数将其映射到一个概率空间,从而实现分类。以下是逻辑回归的主要特点和工作原理:线性模型:逻辑回归首先构建一个线性模型。设 (x_1, x_2, \ldots, x_n) 是输入特征,(w_1, w_2, \ldots, w_n) 是权重,(b) 是偏置,那么线性组合可以表示为: [ z = w_1 \cdot x_1 + w_2 \cdot x_2 + \ldots + w_n \cdot x_n + b. ]Sigmoid函数:为了将线性模型的输出转换为概率,逻辑回归使用sigmoid函数,也称为逻辑斯蒂函数。该函数可以将任意实数映射到0和1之间,定义如下: [ \sigma(z) = \frac{1}{1 + \exp(-z)}. ]输出概率:通过sigmoid函数,线性模型的输出被转化为概率。对于二分类任务,这个概率可以解释为样本属于某个类别的概率。例如,如果我们预测输出为1的概率是0.7,那么预测输出为0的概率就是0.3。 ...

cover

浅谈《天国:拯救》中的骰子游戏

原链接: https://zhuanlan.zhihu.com/p/386924079?utm_campaign=shareopn&amp;utm_medium=social&amp;utm_psn=1806094671581167616&amp;utm_source=wechat_session 正文:《天国:拯救》是由战马工作室制作的中世纪RPG游戏,根据1403年发生的真实历史改编。本作的故事发生在中世纪时,匈牙利之王与瓦茨拉夫四世内战的波西米亚,《天国:拯救》的故事是根据真实历史改编的。随着贤君查理四世驾崩,神圣罗马帝国陷入了战争、腐败与混乱。瓦次拉夫,查理四世的儿子,却沉迷荒淫之事而不理朝政。瓦茨拉夫不满的宗亲贵族最后只能求助于瓦茨拉夫的皇兄——匈牙利之王,西格斯蒙德。但西格斯蒙德最后采用了极端的方式,绑架国王,逼其退位,趁乱夺权,其率部队大举进攻波西米亚,并侵蚀国王盟友的领地。在这乱世中,铁匠之子亨利在城镇斯卡里茨和父母过着平凡而快乐的生活,但这平静生活被一群库曼人雇佣军所打乱,他们收到了西格斯蒙德的亲令,掠夺并烧毁了城镇,在这次混乱中,亨利是为数不多的逃过这场浩劫的幸存者 ...

宇宙的最终结局会是什么?宇宙命运结局的三种假说

宇宙是如何诞生的?这个问题一直吸引着人类的好奇心。随着二十世纪六十年代,宇宙微波背景辐射的发现,科学界普遍认为,宇宙起源于大约138亿年前的一次大爆炸。然而,宇宙的最终结局又是怎样的呢?这是另一个让人类深思的问题。自人类诞生以来,人们就对死亡充满了恐惧,因为死亡意味着失去一切,无论是美好的事物,还是别的东西,全都将趋于“虚无”。虽然人类对死亡非常恐惧和厌恶,但是它似乎是宇宙中的一道铁律,目前仍然没有破解和逃脱的方法。不仅地球上所有的生物都难逃灭亡的结局,就连宇宙本身或许也不是永恒存在的,它也许会在遥远未来的某天迎来自己的终结,这已成为科学界公认的事实。关于宇宙的最终结局,科学家们提出了多种假说。其中一个是“大撕裂”理论,随着科学的发展,科学家们又提出了另外两种关于宇宙最终命运的假说:热寂和大坍缩。本期内容我们就来聊聊这个话题。1. 大撕裂假说图片来自网络宇宙的命运一直是天文学家争论不休的话题。有些人认为宇宙将永远存在,而另一些人则认为它最终会走向毁灭。如果你是一个科学家,你可能会对宇宙的未来感到担忧。因为有一种假说告诉我们,宇宙的结局可能是一场灾难性的大撕裂!大撕裂理论认为,宇宙的膨胀 ...

物理学家打造史上最难迷宫:极易碎成微粒

代达罗斯本可以从英国和瑞士的物理学家团队那里获取灵感。他们从分形几何和国际象棋的策略游戏中汲取原理,创造出了他们所说的有史以来最难的迷宫。在英国布里斯托尔大学物理学家菲利克斯·弗利克的带领下,这个研究小组在阿曼-比克尔平纹图案中产生了被称为汉密尔顿循环的路线,创造了复杂的分形迷宫。他们说,这些分形迷宫描述了一种被称为准晶体的特殊物质形态。它的灵感来自于一个骑士在棋盘上的移动。“当我们观察我们构建的线条的形状时,我们注意到它们形成了令人难以置信的复杂迷宫。随后迷宫的大小呈指数级增长,且数量无限,”弗莱克解释说。“在骑士之旅中,棋子(向前跳两个格,向右跳一个格)在回到起始方格前只访问一次棋盘的每个方格。这是‘汉密尔顿循环’的一个例子,即通过地图的循环只访问所有站点各一次。”准晶体是自然界中极其罕见的物质形态,是固体中有序和无序晶体的奇特混合。在有序的晶体中 —— 如盐、钻石或石英 —— 原子以非常整齐的模式排列,并在三维空间中重复。你可以将这个晶格的一部分叠加到另一部分上,它们就会完美地匹配。无序的或无定形的固体是指其中的原子都是乱糟糟的,包括玻璃和一些通常在地球上找不到的冰。准晶体是一种 ...

cover

地心人和外星人阴谋论

由于本文对超维度到能拨弄时间的文明是否存在这个问题持有悲观态度,因此论述条件限制在三维下。 1.1 地心文明论我们默认地心是指距离地面6000公里的地方,这个地方的特点是:4000摄 氏度以上的极高温360 GPa 的地心压力没有阳光、几乎没有水分、氧气放射性元素衰变产生的大量辐射不依靠【温室】能在这种地方活下来的生物应该具有的特点:不能 是碳基,因为蛋白质DNA细胞分子结构全都会在高温下遭到破坏生物体 结构要异常坚韧,能在极高压下维持运作能有办法直接或间接吸收地热 能量维持生物体运作,且这个过程气体和水不参与反应其生存和繁衍模式能与辐射共生我们目前探测地心的手段有:由于地球内部的密度变化会影响地球重力场,因此精确重力测量可以给出地下岩石密度变化 由于地核中的液态铁和镍会产生磁场,通过探测地球磁场变化可以分析地壳中磁性物质分布遇到液体层会减速的纵向地震波,和只在固体传播的横向地震波人类的理性只能讨论可知的部分,讨论不可知部分是无效操作,在可知的范围内,目前只有少量微生物能在深底层存活,马里亚纳海沟最深处的生物也只是距离地面11公里而已。在可知范围内,没有任何生物能在地心长期生存。在贝叶 ...