对js数组中的简单理解
对js数组中的简单理解
一、检测数组
1、instanceof
if(value instanceof Array){
}
2、Array.isArray()
if(Array.isArray(value)){
}
迭代器方法:
Array原型上有三个方法检测数组内容
1、key() 数组索引
2、value() 数组值
3、 entries() 数组索引加值
二、复制和填充
ES6新增了两个方法:批量复制的fill()、填充数组的copyWithin()
1、fill()
Array.fill(‘填充值','填充索引)
可以向数组中插入全部或部分相同的值。开始索引用于指定开始填充的位置,是可选的。如果不提供索引,则重头开始一直填充到数组末尾。
填充索引为负数时,则重数组末尾开始计算。
2、copyWithin()
按照指定范围浅复制数组中的部分内容,然后插入指定索引开始的位置
let ints=[0,1,2,3,4,5,6,7,8,9]
//从索引零开始位置复制内容,插入到索引到五的位置
ints.copyWitnin(5); //[0,1,2,3,4,0,1,2,3,4]
//从索引为5的位置开始复制,一直复制到结尾,插入到索引为0的位置
ints.copyWithin(0,5) //[5,6,7,8,9,5,6,7,8,9]
//从索引为0的位置复制到索引为3位置的内容,插入到索引为4的位置
ints.copyWithin(4,0,3)//[0,1,2,3,0,1,2,7,8,9]
三、转换方法
toLocaleString()、toString()、valueOf()
toString():返回由数组每个值等效字符串拼接成的一个逗号分隔的字符串,数组每个值都会调用其toString方法。
valueOf():返回的是数组本身
toLocalString()和toString()差不多,区别是前者数组中的每个值都会调用toLocalString方法。
四、数组中的删除增加
一、栈方法
关键词:尾部、栈
pop:尾部删除
push:尾部添加
栈:先进后出,自然就是尾部操作
二、队列方法
关键词:头部、队列
unshift:头部添加
shift:头部删除
队列:先进先出,头部进行操作
五、排序方法
一、倒序:reverse()
let i=[1,2,3,4,5]
console.log(i.reverse())//[5,4,3,2,1]
二、升序:sort()
升序和倒序同理。
升序也可以做数组查重的方法之一。
sort(a,b)=>a<b?1:a >b?-1:0
上面的写法可以变成大到小的排列
六、操作方法
1、concat()
作用就是连接两个数组
let a=[1,2,3]
let b=[4,5,6]
let c=[]
c=a.concat(b)
console.log(c)//[1,2,3,4,5,6]
2、slice()
会创建一个新数组,不会改变旧数组的内容
slice(),会接收一个或者两个参数。
当只有一个参数的时候,slice()会返回该索引到数组末尾的所有元素
let a=[1,2,3,4]
console.log(a.slice(1))//[2,3,4]
当有两个参数的时候,slice()会返回从开始的索引到结束的索引对应的所有元素,注意:不包括结束索引对应的元素。相当于这种感觉[开始,结束)
let a=[1,2,3,4,5,6]
console.log(a.slice(1,4))//[2,3,4]
3、最强大的数组方法 splice()
会改变原数组的内容
三种功能 删除、插入、替换
删除:需要传两个参数,第一个是开始的位置,第二个是这个位置后的数量
插入:需要穿三个参数,第一个是开始的位置,第二个是位置后的数量,第三个是内容
替换:需要穿三个参数,第一个是开始的位置,第二个是位置后的数量,第三个是内容
七、搜索和位置方法
两种方法:严格相等搜索法、断言函数搜索法
严格相等搜索法:
indexOf()、lastIndexOf()、includes()
这些方法都接收两个参数,查找的元素、开始的位置
indexOf()、lastIndexOf() 都返回要查找元素在数组的位置,没找到就返回-1
返回的都是索引
include()是ES7中的方法,可以用来判断某个元素该数组中存在没有
断言函数:
断言函数返回的值决定相应的索引的元素是否被认为匹配
三个参数:元素、索引、元素本身。元素是当前在数组中搜索的元素,索引是当前元素的索引、数组是正在搜索的数组。返回值为布尔值。
find()、findIndex()
前者返回的是匹配的元素,后者返回的是元素的索引
都从最小索引开始搜索
当找到匹配项后,不会再继续进行查找
八、迭代方法
every()、filter()、forEach()、map()、some()
every()相当于数学关系中的且关系
some() 相当于数学关系中的或关系
filter()和forEach()相似,前者是创建了一个新数组去操作,后者是在原有的数组上去操作。
可用来进行数组去重。可看我另一篇博客
九、归并方法
reduce() 、reduceRight()
都会迭代所有的项,并且在此基础上给出一个最终的返回值。
reduce()从数组的第一项返回到最后一项,reduceRight()相反
都有四个参数:上一个归并值、当前项、当前项索引、数组本身
可用reduce()进行数组的累加操作