JavaScript中的数组常用方法
- join(arg) 作用将数组变成字符串,只有一个参数为字符串连接符(可选,默认为 , ),返回值为一个字符串
var arr = [1,2,3,4]
console.log(arr.join());
console.log(arr.join('-'));
- reverse() 作用翻转数组,无参数,返回值为翻转后的数组,会改变原数组。
var arr2= [1,2,3,4]
console.log(arr2.reverse());
- push(arg) 作用从后面添加成员(一个或多个),参数是要插入的成员,返回值为新的数组长度。
var arr3 = [1,2,3,4]
console.log(arr3.push(6,3));
console.log(arr3);
- unshift(arg) 作用从前面添加成员(一个或多个),参数是要插入的成员,返回值为新的数组长度
var arr4 = [2,3,6]
console.log(arr4.unshift(9,8));
console.log(arr4);
- pop() 作用删除数组的最后一个元素,无参数,返回值为最后一个成员。
- shift 作用删除数组的第一个元素,无参数,返回值为第一个成员。
var arr5 = [1,2,3,4,5,6]
console.log(arr5.pop());
console.log(arr5);
console.log(arr5.shift());
console.log(arr5);
- Array.isArray(arr) 作用是检测目标是否为数组 ,参数是要检测的对象,是数组返回true,否则返回false。
var arr6 = []
var str = ''
console.log(Array.isArray(arr6))
console.log(Array.isArray(str))
- includes(arg) 作用是检测数组是否包含某个成员,参数为要检测的成员,包含则返回true,否则返回false。
var arr7 = [1,2,3,4,'www']
console.log(arr7.includes(2))
console.log(arr7.includes('www'))
- every(fn) 作用是用于检测数组所有元素是否都符合指定条件,参数fn是个函数,函数接收三个参数,第一当前成员(item 必须),第二当前成员的下标(index 可选),第三当前成员所属数组(arr 可选),所有成员都符合条件返回true,否则返回false。
var arr8 = [1,2,3,4]
console.log(arr8.every(function (item,index,arr){
return item > 0
}));
console.log(arr8.every(function (item,index,arr){
return item > 3
}));
- some(fn) 作用是用于检测数组是否有元素符合指定条件,参数fn是个函数,函数接收三个参数,第一当前成员(item 必须),第二当前成员的下标(index 可选),第三当前成员所属数组(arr 可选),只要有一个成员符合条件就返回true,否则返回false。
var arr9 = [1,2,3,4]
console.log(arr9.some(function (item,index,arr){
return item > 3
}));
console.log(arr9.some(function (item,index,arr){
return item > 6
}));
- indexOf(arg) 作用从左边开始检测成员在数组的下标(lastIndexOf(arg)是从右边开始检测),参数是需要检测的成员,有则返回第一个符合条件的成员下标,没有则返回-1。
注:indexOf()只适用数组成员为基本类型的数组
var arr10 = [1,2,1,3,4]
console.log(arr10.indexOf(1));
console.log(arr10.lastIndexOf(1));
console.log(arr10.indexOf(6));
- findIndex(fn) 作用是在数组查找符合条件的成员的下标,参数fn是个函数,函数接收三个参数,第一当前成员(item 必须),第二当前成员的下标(index 可选),第三当前成员所属数组(arr 可选),有则返回第一个符合条件的成员的下标,没有则返回-1。
注: findIndex(fn)适用任何数组
var arr11 = [1,2,3,4]
console.log(arr11.findIndex(function (item){
return item >2
}));
- find(fn) 作用是在数组中查找符合条件的成员,参数fn是个函数,函数接收三个参数,第一当前成员(item 必须),第二当前成员的下标(index 可选),第三当前成员所属数组(arr 可选),有则返回第一个符合条件的成员,没有则返回-undefined。
var arr12 = [1,2,3,4]
console.log(arr12.find(function (item){
return item >2
}));
- slice(arg1,arg2) 作用是截取数组,第一个参数是截取开始的数组下标(包含),第二个参数是截取结束的数组下标(不包含),返回值是一个新数组,不会改变原数组。
var arr13 = [1,2,3,4,5,6]
console.log(arr13.slice(2,-1));
console.log(arr13);
- splice(index,num,item) 作用是删除(任意位置)或替换数组成员,第一个参数是开始删除的下标(index),第二个参数是删除成员的个数(num),第三个参数是用以替换的新成员(item 可选),返回值为由被删除的元素组成的数组,该方法会改变原数组。
var arr14 = [1,2,3,4,5,6]
console.log(arr14.splice(0,3,9,9,9));
console.log(arr14);
- map(fn) 作用是按照原始元素顺序依次处理元素,参数fn是个函数,函数接收三个参数,第一当前成员(item 必须),第二当前成员的下标(index 可选),第三当前成员所属数组(arr 可选),返回值为一个被fn函数处理过的新数组,不会改变原数组。
var arr15 = [{ name: 'www', num: 10 }, { name: 'ssss', num: 22 }, { name: 'rrr', num: 33 }]
var newArr15 = arr15.map(function (item) {
return {
userName: item.name,
value: item.num
}
})
console.log(arr15);
console.log(newArr15);
- filter(fn) 作用是返回符合条件的数组,参数fn是个函数,函数接收三个参数,第一当前成员(item 必须),第二当前成员的下标(index 可选),第三当前成员所属数组(arr 可选),返回值是一个被fn函数处理过的新数组,不会改变原数组。
var arr15 = [1,2,3,4,5]
console.log(arr15.filter(function(item){
return item > 2
}))
- forEach(fn) 作用是遍历数组,参数fn是个函数,函数接收三个参数,第一当前成员(item 必须),第二当前成员的下标(index 可选),第三当前成员所属数组(arr 可选),无返回值
var arr16 = [1,2,3]
arr16.forEach(function (item,index){
console.log(item,index);
})
- sort(fn) 作用对数值成员进行排序,
- 第一种情况字符串数组,无参数,返回值为按升序排列的数组,会改变原数组(若要降序,翻转数组即可)。
- 第二种情况数字数组,参数是fn函数,fn接收两个参数,升序排列只需function(a,b){return a-b},降序排列只需function(a,b){return b-a}。
- 第三种情况对象数组,参数是fn函数,接收两个参数a,b。升序排列只需 if a[属性名] > b[属性名] return 1;if a[属性名] < b[属性名] return -1;if a[属性名] === b[属性名] return 0;。降序只需改return 后面的数值。
var strArr = ['wqe','saf','cxz','lkj']
console.log(strArr.sort());
var numArr = [2,1,4,1,3,5]
console.log(numArr.sort(function(a,b){
return a-b
}));
var objArr = [{id:2,name:'fsw'},{id:3,name:'wsw'},{id:1,name:'qrw'},{id:1,name:'q11w'}]
objArr.sort(function(a,b){
if(a['id'] > b['id']){
return 1;
}else if(a['id'] < b['id']){
return -1;
}else if(a['id'] === b['id']){
return 0;
}
})
console.log(objArr);
- reduce(fn,initValue) 作用是获取数组累加总和,第一个参数为函数,函数有4个参数,第一是数组总和(必须),第二是当前成员(必须),第三是当前成员下标(可选),第四是当前成员所在数组(可选)。第二个参数为initValue(累加初始值,默认值为0)
var arr20 = [1,2,4,6]
var sum = arr20.reduce(function(sum,item,index,arr){
return {num:sum['num'] + item}
},{num:0})
console.log(sum)