Array的常用方法

Array的常用方法

Posted by EWL on July 22, 2018

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