4-14 JS数组(删除数组中的元素)

JS对象可以分很多类,其中包括数组和函数

一、数组对象

数组是一种特殊的对象
JS其实没有真正的数组,只是用对象模拟数组
在其他语言中,数组是一个连续的空间分配,但在JS中不是

1.JS数组不是典型数组

  • 典型的数组
    1.元素的数据类型相同(都是数字)
    2.使用连续的内存存储
    3.通过数字下标获取元素
    在这里插入图片描述
  • JS的数组不是这样
    1.元素的数据类型可以不同(可以是数字或者对象,内存可以不连续)
    2.内存不一定连续(对象是随机存储的)
    3.不能通过数字下标来获取,只能通过字符串下标(下标是key,只能是字符串),因此JS数组不支持数字下标
    4.意味着数组可以有任意 key
    5.如:let arr = [1,2,3]
    arr['xxx']=1
    ==总结:JS的数组实际上是对象,使用 keyvalue 来模拟的数组=
    在这里插入图片描述
    在这里插入图片描述

2.创建一个数组

  • 新建
    let arr = [1,2,3]
    let arr = new Array[1,2,3]:和第一个完全等价,这个便于理解,第一个是简写
    let arr = new Array(3):其中3为数组的长度

  • 转化
    1.let arr = '1,2,3'.split(',')
    2.let arr = '123'.split('')
    以上两种是简写
    在这里插入图片描述
    3.Array.from(123):从什么地方得到一个数组,给它传一个字符串,它就会把不是数组的东西尝试变成数组
    Array.from()不是能把所有东西都可以变成数组:1.数字和布尔都不行;
    要求:1.对象有0、1、2、3这样的下标;2.有一个length属性
    如果:length的长度和前面的数量对不上,以长度为准
    如:Array.from({0:'a',1:'b',2:'c',3:'d',length:3})
    在这里插入图片描述
    4.为什么不是真正的数组,却可以通过数字下标得到?如:arr[1]
    答:因为JS会自动先变成字符串1,再放进去

  • 伪数组(原型链有关):没有数组共有属性的[数组],就是伪数组
    1.let divList = document.querySelector('div'):创造一个数组,里面没有push、pop这些数组共有属性,因此这是一个伪数组
    结局方法:添加一个Array.from,可以把不是数组的东西变成数组
    2.伪数组的原型链中没有数组的原型,因为它的原型直接指向了对象的原型
    array中第一层是012345,第二层的__proto__里面是jion、push、map属性,第三层__proto__才是普通对象的共有属性,所以里面是有一层原型的,这一层原型才是数组的精髓
    而伪数组看起来像数组,但点开原型链,点开第一层的__proto__直接就是共有属性,没有push这些
    什么是伪数组?
    答:如果一个数组中push、pop这些所有数组共有的属性,那么它就是伪数组
    在这里插入图片描述
    在这里插入图片描述

  • 合并两个数组,得到新数组
    arr1.concat(arr2):concat会得到一个新数组,不会改变原来的数组
    在这里插入图片描述

  • 截取一个数组的一部分(不影响原数组)
    arr5.slice(1):从第二个元素开始(计数是:0,1,2)
    arr5.slice(0):全部截取,常用于复制一个数组
    let arr6 = arr5.slice(0):复制数组5为数组6
    注意:JS只提供浅拷贝
    在这里插入图片描述

增删改查

数组中的元素

1.删元素(不推荐使用的两种)

  • 跟对象一样
    delete arr['0']
    arr[empty, "b", "c"]
    长度没有发生改变
    在这里插入图片描述
  • 稀疏数组:把数组中的元素全删了,只有长度,没有下标(没有任何好处,只有bug的数组)
    在这里插入图片描述
  • 直接改length可以删元素:不要随便改length
    在这里插入图片描述

2.删元素(推荐使用的方法)
一个对象提供的函数就叫做API(这里包括 shift、pop、splice)

  • 删除头部的元素
    shift就是把整体向上抬,第一个元素就被挤出去,长度也会随着改变
    arr.shift():arr 被修改,并返回被删元素
    在这里插入图片描述
  • 删除尾部的元素
    arr.pop():arr 被修改,并返回被删元素
    在这里插入图片描述
  • 删除中间的元素
    arr.splice(index,3):删除下标为从index的3个元素(包含index
    在这里插入图片描述
    arr.splice(index,1,'x'):删除一个元素,并在元素位置添加’x’
    arr.splice(index,1,'x','y'):删除一个元素,并在元素位置添加’x’,‘y’(数量可任意)
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值