1.基本:
push/pop/shift/unshift
push向末尾添加一个或多个值,将要传的值作为参数传递,eg:arr.push(2,3)
pop向末尾移除一个值,
shift删除首部的一个值,
unshift向首部添加一个或多个值(传参数)
以上方法都是直接修改原数组,添加的方法返回值为新数组长度,删除的方法返回值为删除的元素
2:进阶
splice:
直接修改原数组,可以传三个参数,可实现删除增加替换的功能
slice:
不影响原数组,传两个参数,开始位置索引,结束位置索引,截取返回一个新数组(不包含介绍索引元素),也可传一个参数,传正数就从该索引往后截取全部,传负数截取后面元素(-1截取一个-2截取2个),传一正一负截取开始位置到去除负数所指的元素之前
split:
不影响原字符串,将字符串截取为数组返回,传参数可制定以某字符截取,截取后每个元素为字符串形式
concat:
不影响原数组,合并数组,返回合并后的新数组
join:
不影响原数组,将数组转为字符串返回,默认以‘,’隔开,可以传参制定隔开符
reverse:
反转数组,直接修改原数组,返回值也是反转后的数组
sort:
排序,直接修改原数组,可以传个比较函数(a,b)=>a-b升序,b-a降序
indexOf/lastindexof和index相反
接受的参数为数值
返回数组中第一个与参数相等的元素的索引,没有满足条件的返回-1
3.高级:
find:
找出满足条件的第一个元素,并返回,没找到返回undefined
findIndex:
var arr=[3,4,5,6,7,8,9]
var res=arr.findIndex(function (item,index) {
return item==4
})
console.log(res);//1
进行循环遍历返回第一个满足条件的元素的索引
以上两个方法(第一个参数为callback)都可以接受第二个参数,用来绑定回调函数的this对象。
function f(v){
return v > this.age;
}
let person = {name: 'John', age: 20};
[10, 12, 26, 15].find(f, person); // 26
includes:
方法返回一个布尔值,表示某个数组是否包含给定的值。可以传两个参数,第二个可传可不传,第二个参数表示开始搜索的索引
map:
不影响原数组,对元素进行加工后返回到一个新数组中
var arr=[7,6,5,4,2,4,9]
var a=arr.map((item,index)=>{
return item=item+5
})
console.log(arr);[ 7, 6, 5, 4, 2, 4, 9 ]
console.log(a);[ 12, 11, 10, 9, 7, 9, 14 ]
reduce:
不影响原数组,对元素进行累加
filter:
不影响原数组,对数组进行过滤,返回满足条件的元素的新数组
some/every:
some:传入一个回调,如果有任意一个元素满足条件则返回true,否则false
every:必须每个元素都满足条件才返回true
遍历数组的方法:entries()
、values()
、keys()
这三个方法都是返回一个遍历器对象,可用for...of
循环遍历,唯一区别:keys()
是对键名的遍历、values()
对键值的遍历、entries()
是对键值对的遍历
for(let item of ['a','b'].keys()){
consloe.log(item);
//0
//1
}
for(let item of ['a','b'].values()){
consloe.log(item);
//'a'
//'b'
}
let arr4 = [0,1];
for(let item of arr4.entries()){
console.log(item);
// [0, 0]
// [1, 1]
}
for(let [index,item] of arr4.entries()){
console.log(index+':'+item);
//0:0
//1:1
}
Array.from
将类数组对象(即有length属性的对象)和可遍历对象转为真正的数组。
比如,使用·Array.from()·方法,可以轻松将·JSON·数组格式转为数组。
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
};
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
Array.of
Array.of()
方法是将一组值转变为数组
let arr0 = Array.of(1,2,33,5);
console.log(arr0);//[1,2,33,5]
let arr1 = Array.of('你好','hello');
console.log(arr1);//["你好", "hello"]