Array常用方法分类
- 会影响原数组的方法
- 排序
- 迭代
- 判断
- 增删替换等
会影响原数组的方法
//实验数组
let Array01 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let Array02 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let Array03 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let Array04 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let Array05 = [1, 21, 13, 24, 75, 106, 37, 80, 79, 210];
let Array06 = [1, 9, 1, 2, 10, 16, 72, 48, 39, 14];
let Array07 = [3, 2, 0, 9, 4, 6, 1, 8, 2, 3, 0, 1, 22, 14, 3, 6, 2, 24];
let item01 = Array01.pop();
console.log('Array01', Array01);
console.log('item01', item01);
let item02 = Array02.push(1);
console.log('Array02', Array02);
let item03 = Array03.shift();
console.log('Array03', Array03);
console.log('item03', item03);
let item04 = Array04.unshift(1);
console.log('Array04', Array04);
console.log('Array07', Array07);
Array07.splice(0, 2);//删除前两项
console.log('Array07', Array07);
Array07.splice(0, 0, 3, 2);//在某一位置插入
console.log('Array07', Array07);
Array07.splice(0, 1, 10);//替换某一位置上的某几个item
console.log('Array07', Array07);
排序方法
- reverse()
定义: 将数组反向排列
Array05.reverse();
console.log('Array05', Array05);
- sort()
定义: 将数组按照ASCII码的大小进行排列,当给sort传入排序函数作为参数的时候,按照排序函数的规则进行排序 参数: 无参数/具有一定排序规则的函数(如下列代码中的rankUp rankDown)
//升序
let rankUp = function (a, b) {
return a - b;//a大于b的时候,返回正数,a在b后面,a小于b的时候,返回负数,a在b前面
};
//降序
let rankDown = function (a, b) {
return b - a;
};
Array06.sort();
console.log('sorted Array06', Array06);
Array06.sort(rankUp);
console.log('rankUp Array06', Array06);
Array06.sort(rankDown);
console.log('rankDown Array06', Array06);
迭代方法
- forEach
定义: 依次输出数组成员,类似于for循环
- filter
定义: 依次对数组成员进行筛选,返回符合条件的数组成员,且返回值为一个单独的数组
- every
定义: 依次对数组成员进行条件比对,如果每一个成员都满足every中给定的条件,那么就返回true,否则就返回false。
- some
定义: 依次对数组成员进行条件对比,只要有一个或一个以上的成员满足给定的条件,那么就返回true,否则返回false。
-
map 定义: 依次对数组成员进行一定条件的映射,并返回一个新的数组,该映射会对数组进行一定程度的处理(简单情况比如加减乘除)
-
reduce
定义: 准确来讲,应属于整合方法,从左到右依次对数组成员进行整合处理,可以进行加减乘除等基本操作。对应的还有reduceRight,与前者对比,唯一的差别是方向自右向左。
代码如下:
let arr01 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
//forEach
arr01.forEach(function (item, index) {
console.log(item, index);
});
//filter
arr01.filter(function (item, index) {
if (item % 2 === 0) {
console.log('the item can be divided by 2:', item);
}
});
//every
let itemAllNumber = arr01.every(function (item, index) {
return typeof item === 'number';
});
console.log(itemAllNumber);
//some
let itemSomeDividedBy3 = arr01.some(function (item, index) {
return item % 3 === 0;
});
console.log(itemSomeDividedBy3);
//map
let newArr = arr01.map(function (item, index) {
return item + 2;
});
console.log(newArr);
//reduce
let newArr01 = arr01.reduce(function (prev, next) {
return prev + next;
});
console.log(newArr01);
//tips: IE8 及以下版本不支持 every, some, map, reduce。
Tips:
for循环 for循环,通过下标,对循环中的代码反复执行,功能强大,可以通过index取得元素。在处理比较复杂> 的处理的时候较为方便。
foreach循环 foreach,从头到尾,对于集合中的对象遍历。适用于简单的遍历。foreach使用的时候,会锁定集合的对 象,期间不能进行修改。
使用的选择 foreach相对于for循环,代码减少了,但是foreach依赖IEnumerable。在运行的时候效率低于for循环。当然 了,在处理不确定循环次数的循环,或者循环次数需要计算的情况下。使用foreach比较方便。而且foreach 的代码经过编译系统的代码优化后,和for循环的循环类似。
可以说,foreach语句是for语句的特殊简化版本,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。在复杂的循环设计时,还是应该使用for循环更加的灵活。
转换方法
- isArray
定义: 对其参数进行是否是数组的判断。
- concat
定义: 对数组进行拼接
参数: 可以为多个单独的参数,例如arr1.concat(1,'string',2,3)
;也可以是单个或者多个数组,例如arr2.concat(arr3,arr4)
;
- join
定义: 将数组成员拼接成字符串
参数: 用于链接数组成员的连接符,例如;
,~
,-
等等
let arr02 = [1, 2, 3, 4, 5];
let arr03 = [6, 7, 8, 9, 10];
let arr04 = ['a', 'c', 'c', 'd', 'e', 'a'];
//isArray
console.log(Array.isArray(arr02));
//concat
console.log(arr02.concat(arr03));
//参数为数组
console.log(arr02.concat([1, 2, 3, 4, 5]));//concat的参数可以是数组也可以直接逐个传入数组成员
//参数为逐个传入的数字类型
console.log(arr02.concat(1, 2, 3, 4, 5));
//join,参数为~
console.log(arr02.join('~'));//返回字符串,且该方法不影响原数组
console.log(arr02);
console.log('1~2~3~4~5'.split('~'));//数组与字符串的相互转换,对应于join方法
console.log(arr03.slice(0, 3));//截取从第一个数组成员开始到第四位前一位的数组片段
console.log(arr03);//不影响原数组
位置方法
- indexOf
定义: 从第一位开始,查找某一个成员在数组中的位置
参数: 被查找的数组对象,当查找对象存在于数组中时返回该成员在数组中位置,当查找对象不存在时返回-1
- lastIndexOf
定义: 从最后一位开始,查找某一个成员在数组中的位置 参数: 被查找的数组对象,当查找对象存在于数组中时返回该成员在数组中位置,当查找对象不存在时返回-1
//indexOf
console.log(arr03.indexOf(10));//4
//lastIndexOf
console.log(arr03.lastIndexOf(10));//4
console.log(arr04.lastIndexOf('a'));//5
console.log(arr04.lastIndexOf('c'));//2