JS中其实没有真正的数组,JS的数组是用对象模拟的。
重点理解splice和reduce
如果一个数字的原型链中没有那些数组所共有的属性(push,pop等),那么它就是伪数组。
新建
let arr = [1,2,3]
let arr = new Array(1,2,3)
let arr = new Array(3)
转化
let arr = '1,2,3'.split(',')
let arr = '123'.split('')
Array.from('123')
合并两个数组,得到新数组
arr1.concat(arr2)
截取一个数组的一部分
slice
arr1.slice(1) //截取从第二个元素到最后一个
arr1.slice(0) //全部截取
注意,JS只提供浅拷贝
删除数组元素
- let arr = ['a','b','c']
delete arr['0']
arr//[empty,'b','c']
array.length === 3 //true数组长度不变,变成稀疏数组。 - 缩短length也可以删数组元素
但是不建议这么做
以上两种删除数组元素的方法都不推荐,使用下边三种。
- 删除头部元素 arr.shift() //arr被修改,并返回被删元素
- 删除尾部元素 arr.pop() //arr被修改,并返回被删元素
- 删除中间元素
arr.splice(index,x) //删除下标为index的后边x个元素
遍历数组
forEach函数
function forEach(array,fn){
for(let i = 0; i < array.length ;i++){
fn(array[i],i,array)
}
}
查找某个元素是否在数组里
arr.indexOf(item) //若存在返回索引号,不存在返回-1
使用条件查找元素
arr.find(item=>item%2 === 0) //找第一个偶数
使用条件查找元素的索引
arr.findIndex(item=>item%2 === 0) //找第一个偶数的索引
增加数组中的元素
在头部添加元素
arr.unshift(item) //修改arr,返回新长度
arr.unshift(item1,item2) //修改arr,返回新长度
在尾部添加元素
arr.push(item)
arr.push(item1,item2)
在中间添加元素
arr.splice(index,0,'x')
arr.splice(index,0,'x','y')
修改数组中的元素
-
反转数组
但是如何反转字符串呢?
arr.reverse()
var s = 'abcde'
s.split('')
s.split('').reverse()
s.split('').reverse().join('')
- 自定义顺序
arr.sort((a,b)=>a-b)
数组变换
- map
n变n
arr.map(item => item*item)
- filter
n变少
arr.filter(item => item%2 === 0 ? true : false)
- reduce
n变1
arr.reduce((sum,item)=> {return sum+item},0)
网友评论