JS数组_笔记

数组是JS数据类型中的一种,也是一种特殊的对象,数组的下标也是字符串。

数组

创建数组

let arr=[1,2,3]
// 数组参数有多个,括号里面表示数组的元素;如果数组参数有一个,就表示数组的长度
// 元素为1,2,3
let arr=new Array(1,2,3)
// 数组长度为3
let arr=new Array(3)

字符串转化成数组

// 第一种
let arr='1,2,3'.split(',');
// 第二种,后面是空字符串
let arr='123'.split('')
//第三种,这种方法可以把伪数组变成数组
Array.from('123')

伪数组

伪数组,伪数组的原型链中没有数组的原型,它的原型直接指向对象的原型。因此,如果一个数组,没有数组的共用属性,比如push、pop等,它就是伪数组。
比如,let divList=document.querySelectorAll('div'),这个divList就是伪数组。

合并数组

API是,arr1.concat(arr2),合并两个数组,得到一个新的数组。

截取数组

API是,arr.slice(0),截取数组的全部元素,常常用于拷贝。注意,JS原生方法只提供浅拷贝。

深拷贝和浅拷贝的区别

  • 浅拷贝:浅拷贝只复制某个对象的地址,而不复制对象本身,新旧对象共享一块内存;
  • 深拷贝:深拷贝会创造一个一模一样的对象,新旧对象不共享内存,修改新对象不会影响到原对象。

操作数组

删除元素

  • 删除头部元素
// 原数组被修改,并且返回被删的元素
arr.shift()
  • 删除尾部元素
// 原数组被修改,并且返回被删的元素
arr.pop()
  • 删除中间的元素
// 删除index的一个元素
arr.splice(index,1)
//删除index的1个元素,添加x元素
arr.splice(index,1,'x')
//删除index的1个元素,添加x、y元素
arr.splice(index,1,'x','y')

查看元素

查看数组所有的元素

有三种方法:

  1. for in
  2. for循环
  3. forEach

分别怎么用?
for in

for(let i in arr){
	console.log(arr[i])
}

for循环

for(let i=0;i<arr.length;i++){
	console.log(arr[i])
}

forEach

let arr=[1,6,9]
arr.forEach(function(node,index){
    console.log(node)
    //结果是:数组中的每一项,1、6、9
    console.log(index)
    // index是数组的每一项的下标,从0开始
})

查看数组单个元素

API:arr[index]

查看某个元素是否在数组里
arr.indexOf(item)
// 存在就会返回索引,不存在就会返回-1
使用条件查询元素,例如找到第一个偶数
arr.find(item=>item%2===0)
使用条件查询元素的索引,例如找到一个偶数的索引
arr.findIndex(item=>item%2===0)

新增数组

在数组尾部添加元素:

arr.push()

在数组头部添加元素:

arr.unshift()

在中间添加元素:

arr.splice(index,0,'x')

反转数组的顺序:

// 修改了原数组
arr.reverse()

自定义顺序:

arr.sort(
    // 可以写其他的形式函数
    (a,b)=>{a-b}
)

数组变换

map

一一映射,新数组的元素个数不改变。
举例:

let arr=[1,2,3,4,5,6]
// 将数组的每一项变成平方
arr.map(item => item*item)
// 实现一一映射

filter

过滤,数量变少。
举例:

let arr=[1,2,3,4,5,6];
// 保留数组中的偶数
arr.filter(item => item%2===0? true : false)
// 缩写
arr.filter(item => item %2===0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值