JavaScript的数组知识点

1、什么是数组?

数组(Array),顾名思义,用来存储一组相关的值,从而方便进行求和、计算平均数、逐项遍历等操作

数组中的值的类型是没有限制的,所以数组中也可以存储数组。

包含数组的数组,我们叫做多维数组(重点)

在实际项目中,数组中通常会存储同一类型的数据。

 定义数组的方法

方法一、

var arr =[]   创建空数组

var arr = [1,2,3,4]    创建带数据的数组,数组里的每一项用逗号隔开

方法二、

函数构造法

var  arr = new Array(1,2,3)等同于var arr = [1,2,3]

但是当  var arr =  new Array(5)时

js内部会给我们创建变量名为arr 的5项空数组空间(empty*5)

var arr = [5] ,这样创建的是变量名为arr并且只有一项数据为5的空间

访问数组项

数组每一项都有下标,下标从0开始

可以使用方括号中书写下标的形式,访问数组的任一项

JavaScript规定,访问数组中不存在的项会返回undefined,不会报错

数组的长度--数组的length表示它的长度,数组的最后一项的下标是数组的长度减1

更改数组项,如果更改的数组项超过了length-1,那么会创造这项 如图所示:

   var arr = [1, 2, 3, 4, 5]   delete arr[0]    console.log(arr); // 这种删除方式,只能删除值,并不能删除小空间 存储删除数据的空间会变成empty

数据类型的检测  使用  Array.isArray(arr)检测arr是不是一个数组类型的数据 

基本数据类型和引用类型

基本类型有 number string boolean undefined null 

引用类型有 function {} []

 区别如下:

1、数据存储方式不同,基本数据类型把数据存入栈内存中,引用类型把数据存入堆内存中,把内存地址放在栈内存中

2、赋值方式不同,基本数据类型直接复制数据,引用类型是复制内存地址

3、比较方式不同,基本类型比较==的时候,只比较数据是否相等,比较===的时候,先判断数据类型是否相等,引用类型比较相等的时候,是比较引用地址是否相等

数组的遍历

 推荐 使用for(var i = 0; i < arr.length; i++){ } 的方法进行遍历数组

因为for(var i in arr){ } 这种方法不会遍历空的数据空间,不适合遍历数组,适合遍历对象使用

 数组的一些常用的操作方法

头尾操作

                                  数组.unshift()和数组.push()会返回数组的长度 

                                  数组.pop()和数组.shift()会返回删除的

splice()方法

splice(v,d,x),v代表开始的下标,d代表删除的个数,x代表添加元素的内容

splice()方法用于替换指定项  eg:splice(1,1,'2') --在下标为1的位置替换数据

splice()方法用于删除指定项  eg:  splice(1,1) --删除下标为1的一项数据

splice()方法用于添加指定项  eg:  splice(2,0,'a')--在下标为2的位置添加一项数据'a'

 reverse()方法

 reverse()方法用于将数组的顺序反转

sort()方法

实现数组的排序

 slice()方法

用于截取数组的某一段

 join()和split()方法

数组的join()方法可以使数组转为字符串;字符串的split() 方法可以使字符串转为数组

 indexOf()方法

查找某个元素在数组中第一次出现的位置,如法如下:

arr.indexOf(元素,[开始查找的起始下标]);
# 参数1:将要查找的元素
# 参数2:可选项。从哪个下标开始往后查找
# 返回值:如果找到了,就返回这个元素在数组中的下标,如果没有找到,就返回-1

includes()方法

该方法用于判断数组中是否存在某个数据,如果有就返回true ,没有的话返回false

forEach()方法

用于遍历数组,如法如下:

arr.forEach(function(值, 下标, 当前数组){
    // 代码段   });
# 在这个方法中需要传入一个函数参数,这个函数的参数说明如下:
# 参数1:数组遍历出来的每个值
# 参数2:可选项。数组遍历出来的每个值对应的下标
# 参数3:可选项。被遍历的当前数组

这个方法没有返回值,返回值为undefined,不会改变原来数组的值。

concat()方法

用于 数组的拼接,将数组拼接为更大的数组

 map()方法

 遍历数组,并将每个元素经过函数处理后,形成新的元素,所有新元素组成新数组返回

语法如下:  

arr.map(function(值,下标,当前数组){的值 - 通常新的值是
    return 新由旧的值处理以后得到
});

filter()方法

将数组中满足指定条件的值,组成新的数组返回

语法如下:

arr.filter(function(值, 下标, 当前数组){
    return 筛选条件
});

使用方法和功能跟map方法很像,只是运行规则不一样。map方法中的函数,用于返回新的元素,而filter方法中的函数,根据返回true或false来筛选元素

reduce()方法

用于数组求和,如图所示:

其中a第一次的时候,表示第一个元素,第二次开始表示上一次返回的数据,b第一次表示第二个元素,第二个开始表示第三个元素、第四个元素。。。

some()方法

判断数组中是否至少有一个元素是满足指定条件的,返回布尔值

布尔值 = 数组.some(function(v,i,a){
    return 条件;
})
// 上面的i和a是可选参数

 some内置的原理,遍历数组,判断每个值是否满足条件,有满足的就返回true,并break循环,遍历完以后都没有一个是满足的,返回false

every()方法

 判断数组中是否所有元素都满足指定的条件,返回布尔值

布尔值 = 数组.every(function(){
    return 条件
})
// 上面的i和a是可选参数

every内置的原理,遍历数组,判断每个值是否满足条件,有不满足的就返回false,并break循环,遍历完以后都满足,返回true

find()方法

 查找数组中第一个满足指定条件的值,找到返回值,找不到返回undefined 

 值 = 数组.find(function(v,i,a){
    return 条件
})
// 上面的i和a是可选参数

 find的原理,遍历数组,判断每个元素是否满足条件,满足就返回这个元素,并break循环,如果遍历完了都没有满足条件的,就返回undefined

findIndex()方法

 查找数组中满足条件的第一个对应的下标,找到返回下标,找不到返回-1

语法:

下标 = 数组.findIndex(function(v,i,a){
    return 条件
})
// 上面的i和a是可选参数

findIndex的原理,遍历数组,判断每个元素是否满足条件,满足就返回这个元素的下标,并break循环,如果遍历完了都没有满足条件的,就返回-1

数组的浅克隆

浅克隆:只克隆数组的第一层,如果是多维数组,或者数 组中的项是其他引用类型值,则不克隆其他层

浅克隆只克隆数组的一层,如果数组是多维数组,则克隆的 项会“藕断丝连”。

数组的深克隆

克隆数组,实现两个一模一样的数组,并且两个数组不会互相影响,可以使用递归实现深克隆

 深克隆:克隆数组的所有层,要使用递归技术,使用递归思想,整体思路和浅克隆类似,但稍微进行一些改 动:如果遍历到项是基本类型值,则直接推入结果数组;如 果遍历到的项是又是数组,则重复执行浅克隆的操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值