arr.push()
- 从后面添加元素,返回值为添加完后的数组的长度,直接修原数组
arr.pop()
- 从后面删除元素,只能是一个,返回值是删除的元素,直接修改原数组
arr.shift()
- 从前面删除元素,只能删除一个 返回值是删除的元素,直接修改原数组
arr.unshift()
- 从前面添加元素, 返回值是添加完后的数组的长度,直接修原数组
arr.join()
- 将arr中每个元素都转为字符串,用自定义的连接符分割,如果 join()里面不加任何参数,用法与toString()一样, 返回字符串
arr.splice(i,n)
- 删除从
i(索引值)开始之后的那个元素,n是删几个元素, 返回值是删除的元素,直接修原数组
arr.splice(i,n,itemX)
- splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
- 删除从
i(索引值)开始之后的那个元素,n是删几个元素,itemX向数组添加的新项目,直接修原数组 n必需,要删除的项目数量。如果设置为 0,则不会删除项目
arr.slice(start,end)
- 从数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素。不会改变原数组
- start:
必须,规定从何处开始选取,如果为负数,规定从数组尾部算起的位置,-1是指最后一个元素 - end:
可选(如果该参数没有指定,那么切分的数组包含从start倒数组结束的所有元素,如果这个参数为负数,那么规定是从数组尾部开始算起的元素)
arr.concat()
- 连接两个数组 返回值为连接后的新数组,直接修原数组
arr.sort()
- 将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的,直接修原数组
// 从小到大
arr.sort((a, b) =>a - b) // [1, 2, 3, 4, 6, 10, 22]
// 从大到小
arr.sort((a, b) =>b - a) // [22, 10, 6, 4, 2, 2, 1]
arr.reverse()
- 将数组反转,返回值是反转后的数组,直接修原数组
arr.slice(start,end)
- 切去
索引值start到索引值end的数组,不包含end索引的值,返回值是切出来的数组,原数组不变
let arr = [1,2,3,4,5]
arr.slice(1, 3) // 返回[1,4,5]
arr.forEach(callback) 有点像for的使用方法
- callback的参数: value --
当前索引的值index --索引array --原数组 - 无return,即使有return,也不会返回任何值, 如果
用到array这参数会修改到原数组
var arr = [1,2,3,4];
var res = arr.forEach((item,index,arr)=>{
arr[index] = item * 2;
return arr
})
console.log(arr); // [2,4,6,8]
console.log(res); // undefined
arr.map(callback)
- callback的参数: value --
当前索引的值index --索引array --原数组 - 遍历数组,有return ,返回一个新数组, 原数组不变
var arr1 = [1,2,3,4];
var res1 = arr1.map((item,index,arr)=>{
item = item * 3;
return item;
})
console.log(arr1); // [1,2,3,4]
console.log(res1); // [3,6,9,12]
arr.forEach()和arr.map()的区别
- arr.forEach()是和for循环一样,是代替for。arr.map()是修改数组其中的数据,并返回新的数据。
- arr.forEach() 没有return arr.map() 有return
13. arr.filter(callback)
- 过滤数组,返回一个满足要求的数组, 原数组不变
arr.every(callback)
- 依据判断条件,数组的元素是否
全满足,若满足则返回ture
let arr = [1,2,3,4,5];
let q = arr.every(function(v, i) { return v < 30 })
arr.some()
- 依据判断条件,数组的元素是否
有一个满足,若有一个满足则返回ture
arr.indexOf()
- 查找某个元素的索引值,若有重复的,则返回第一个查到的索引值, 若不存在,则返回 -1
arr.lastIndexOf()
- 和
indexOf()的功能一样,不同的是从后往前查找
Array.from()
- 将伪数组变成数组,就是只要有length的就可以转成数组。 ---es6
let str = '123'
console.log(Array.from(str)) // ["1", "2", "3"]
let obj = {0:'a',1:'b',length:2}
console.log(Array.from(obj)) // ["a", "b"]
Array.of()
- 将一组值转换成数组,类似于声明数组 ---es6
let str = '8'
console.log(Array.of(str)) // ['8']
等价于
new Array('8') //不能是number, 不然是空数组 [empty × 8] 是个空数组
arr.find(callback)
- callback的参数: value --
当前索引的值index --索引array --原数组 - 找到
第一个符合条件的数组成员,返回第一个符合条件的元素, 原数组不变
arr.findIndex(callback)
- 找到第一个符合条件的数组成员的索引值,返回该索引值
arr.includes()
- 判断数中是否包含给定的值,返回true || false
arr.keys() ==== 不常用,我是没这样用过
- 遍历数组的键名
- 参考 www.jianshu.com/p/e2e38e9be…
let arr = [1,2,3,4,5];
ler a = arr.keys(); // 打印a = Array Iterator {}, 属于Iterator接口,任何数据结构只要部署Iterator接口,就可以完成遍历操作
ES6创造了一种新的遍历命令for...of循环,Iterator接口主要提供 for...of 消费
for (let key of a) {
console.log(key); // 0,1,2,3
}
arr.values()
- 遍历数组键值, 和上面arr.keys()用法类似
arr.entries()
- 遍历数组的键名和键值 [key: value]
let w = [1,2,3,4]
let ww = w.entries() // 打印www = Array Iterator {}
for(let l of ww){
console.log(l) // [0, 1] [1, 2] [2, 3] [3, 4]
}
arr.reduce(callback, initialValue)
- 迭代数组的所有项,累加器,数组中的每个值(从左到右)合并,最终计算为一个值
- callback:
previousValue 必选:--上一次调用回调返回的值,或者是提供的初始值(initialValue)currentValue 必选:--数组中当前被处理的数组项index 可选:--当前数组项在数组中的索引值array 可选:--原数组initialValue 可选:--初始值 - 回调函数第一次执行时,preValue 和 curValue 可以是一个值,如果
initialValue 在调用 reduce() 时被提供,那么第一个 preValue 等于 initialValue,并且curValue 等于数组中的第一个值;如果initialValue 未被提供,那么preValue 等于数组中的第一个值.
let arr = [0,1,2,3,4]
let arr1 = arr.reduce((preValue, curValue)=> {
return preValue + curValue
})
console.log(arr1) // 10
let arr2 = arr.reduce((preValue,curValue)=> {
return preValue + curValue
}, 5)
console.log(arr2) // 15
- 计算数组中每个元素出现的次数
let names = ['peter', 'tom', 'mary', 'bob', 'tom','peter'];
let nameNum = names.reduce((pre,cur)=>{
if(cur in pre){
pre[cur]++
}else{
pre[cur] = 1
}
return pre
}, {})
console.log(nameNum); //{ peter: 2, tom: 2, mary: 1, bob: 1 }
- 数组去重
let arr = [1,2,3,4,4,1]
let newArr = arr.reduce((pre,cur)=>{
if(!pre.includes(cur)){
return pre.concat(cur)
}else{
return pre
}
}, [])
console.log(newArr);// [1, 2, 3, 4]
- 使用Math的静态方法max/min,得到数组中最大最小值
function getMax(prev, next) {
return Math.max(prev, next)
}
arr.reduce(getMax)
arr.reduceRight(callback, initialValue)
-
与arr.reduce()功能一样,不同的是,reduceRight()从数组的末尾向前将数组中的数组项做累加
结语
前端react QQ群:
788023830----React/Redux - 地下老英雄前端交流 QQ群:
249620372----FRONT-END-JS前端(我们的宗旨是,为了加班,为了秃顶……,仰望大佬),希望小伙伴们加群一起学习