Array原型之非变异方法

Array

Array对象是用于构造数组的全局对象.

概述

数组对象是一个有序的数据(原始类型或对象类型)集合, 是一种类列表对象,它的原型提供了数组操作的方法.
数组只能用整数作为数组元素的索引,而不是字符串,且从0开始,第一个元素的索引为0.使用非整数并通过[].来访问数组或设置数组元素时,所操作的并不是数组列表的元素,而是数组对象属性集合上的变量.数组对象的属性和数组元素列表是分开存储的,并且数组的遍历和修改操作也不能作用于这些命名属性.

1
2
3
4
5
6
var arr = [];
arr['zero'] = 'zero';
arr[0] = 0;
arr.forEach(item => console.log(item))

// 0

原型方法

非变异方法

Array.prototype.slice()

描述 :
浅拷贝数组指定区域的元素.
语法 :

arr.slice(begin[, end])

begin(可选) : 起始索引, 默认值为0. 如果是负数, 则开始索引会被自动计算成为 this.length + start.
end : 终止索引, 默认值 this.length. 不包括end位置. 如果是负数时, 规则如上.
返回值 : 返回截取的新数组(浅复制).

1
2
3
4
5
6
7
8
9
10
11
let arr0 = [3, 2, 1];
let arr00 = arr0.slice();
console.log('arr0:', arr0, 'arr00:', arr00);

// arr0: [ 3, 2, 1 ] arr00: [ 3, 2, 1 ]

let arr1 = [5, 4, 3, 2, 1];
let arr11 = arr1.slice(2, 3);
console.log('arr1:', arr1, 'arr11:', arr11);

// arr1: [ 5, 4, 3, 2, 1 ] arr11: [ 3 ].

Array.prototype.concat()

描述 :
合并多个值或数组.
语法 :

array.concat(element0[, element1[, ...[, elementN]]])

elementN : 将要连接的值或数组.
返回值 : 多个值或数组合并后的新数组.

1
2
3
4
5
6
7
8
9
10
11
12
13
let arr0 = [6, 5, 4];
let arr1 = [3, 2, 1];
let arr = arr0.concat(arr1);
console.log('arr0:', arr0, 'arr1:', arr1, 'arr:', arr);

// arr0: [ 6, 5, 4 ] arr1: [ 3, 2, 1 ] arr: [ 6, 5, 4, 3, 2, 1 ]

let arr2 = [6, 5, 4];
let arr3 = [2, 1];
let arr = arr2.concat(3, arr3);
console.log('arr2: ', arr2, 'arr3: ', arr3, 'arr', arr);

// arr2: [ 6, 5, 4 ] arr3: [ 2, 1 ] arr [ 6, 5, 4, 3, 2, 1 ]

Array.prototype.join()

描述 :
将数组众元素用指定字符连接成字符串.
语法 :

arr.join(connector)

connector : 指定一个字符链接数组中的每个元素, 默认逗号连接.
返回值 : 用指定连接符将数组中元素连接起来的字符串.

1
2
3
4
5
6
7
let arr0 = [3, 2, 1];
let str1 = arr0.join();
let str2 = arr0.join('');
let str3 = arr0.join('-');
console.log('arr0:', arr0, 'str1:', str1, 'str2:', str2, 'str3:', str3);

// arr0: [ 3, 2, 1 ] str1: 3,2,1 str2: 321 str3: 3-2-1;

Array.prototype.toString()

描述 :
用字符串形式表示数组元素.
语法 :

arr.toString()

返回值 : 逗号连接数组元素组成的字符串. 当数组元素为数组时, 自动调用其toString()方法.

1
2
3
4
5
6
let arr0 = [3, 2, 1];
let arr00 = arr0.toString();
let arr1 = [[6, [5, 4]], 3, 2, 1].toString();
console.log('arr0:', arr0, 'arr00:', arr00, 'arr1:', arr1);

// arr0: [ 3, 2, 1 ] arr00: 3,2,1 arr1: 6,5,4,3,2,1;

Array.prototype.includes()

描述 :
判断数组中是否指定值.
语法 :

arr.includes(searchElement[, fromIndex])

searchElement : 需要查询的值.
fromIndex : 起始索引, 默认值为0. 如果是负数时, 规则如上.
返回值 : 布尔值.

1
2
3
4
5
6
let arr0 = [3, 2, 1];
let a = arr0.includes(3);
let b = arr0.includes(3, 1);
console.log('arr0', arr0, 'a:', a, 'b:', b);

// arr0 [ 3, 2, 1 ] a: true b: false;

Array.prototype.indexOf()

描述 :
查询指定元素在数组中首次出现的索引位置.
语法 :

arr.indexOf(searchElement[, fromIndex])

searchElement : 需要查询的值.
fromIndex : 起始索引, 默认值为0. 如果是负数时, 规则如上.
返回值 : 首次被找到的元素在数组中的索引位置; 若没有找到则返回 -1.

1
2
3
4
5
6
let arr0 = [3, 2, 1];
let a = arr0.indexOf(1);
let b = arr0.indexOf(3, 1);
console.log('arr0:', arr0, 'a:', a, 'b:', b);

// arr0: [ 3, 2, 1 ] a: 2 b: -1;

Array.prototype.lastIndexOf()

描述 :
从数组的后面向前查找, 查询指定元素在数组中首次出现的索引位置.
语法 :

arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])

searchElement : 需要查询的值.
fromIndex : 逆向查找起始索引, 默认值 this.length - 1.
返回值 : 逆向首次被找到的元素在数组中的索引位置.

1
2
3
4
5
6
let arr0 = [3, 2, 1];
let a = arr0.lastIndexOf(1);
let b = arr0.lastIndexOf(3, 1);
console.log('arr0:', arr0, 'a:', a, 'b:', b);

// arr0: [ 3, 2, 1 ] a: 2 b: 0;

------------- The End -------------
显示评论