数组笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

前言

Array 方法笔记~

concat 合并数组并返回新的数组

1
2
3
var a1 = [1, 2, 3];
var a2 = a1.concat(['a', 'b', 'c']);
console.log(a2); // 1,2,3,a,b,c

join 数组转字符串

1
2
var a = ['Wind', 'Rain', 'Fire'];
console.log(a.join(' - ')); // "Wind - Rain - Fire"

pop 移除掉数组的最后一个元素,并把该元素返回

1
2
3
4
var a = [1, 2, 3];
var last = a.pop();
console.log(a); // 1,2
console.log(last); // 3

push 在数组的尾部插入一个元素,,并返回新的数组长度

1
2
3
var a = [1, 2];
a.push(3);
console.log(a); // 1,2,3

reverse 数组反转

1
2
3
var a = [1, 2, 3, 4];
a.reverse();
console.log(a); // 4,3,2,1

shift 移除并返回数组的第一个元素

1
2
3
4
var a = [1, 2, 3];
var first = a.shift();
console.log(a); // 2,3
console.log(first); // 1

unshift 在数组首位插入一个元素,并返回新的数组长度

1
2
3
var a1 = [1, 2, 3];
a1.unshift(4);
console.log(a1); // 4,1,2,3

slice (start_index, upto_index) 返回数组指定元素

1
2
3
var a1 = ['a', 'b', 'c', 'd', 'e'];
var a2 = a1.slice(1, 4);
console.log(a2); // b,c,d

splice(index, count_to_remove, addelement1, addelement2, …)

方法向/从数组中添加/删除项目,然后返回被删除的项目。p.s方法会改变原数组

参数 描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
count_to_remove 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
addelement1 可选。向数组添加的新项目。
1
2
3
4
var a = ['a', 'b', 'c', 'd', 'e'];
var removed = a.splice(1, 3, 'f', 'g', 'h', 'i');
console.log(removed); // b,c,d
console.log(a); // a,f,g,h,i,e

copyWithin(target, start, end) 用于从数组的指定位置拷贝元素到数组的另一个指定位置中

参数 描述
target 必需。复制到指定目标索引位置。
start 可选。元素复制的起始位置。
end 可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.copyWithin(2, 0); // Banana,Orange,Banana,Orange

entries 返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)

1
2
3
4
5
6
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var every = fruits.entries();
every.next().value;//Banana
every.next().value;//Orange
every.next().value;//Apple
every.next().value;//Mango

find 返回达成条件的数组的第一个元素的值

1
2
var ages = [3, 10, 18, 20, 30, 40];
ages.find((item)=>item>18) // 20

findIndex 返回达成条件的数组的第一个元素的索引

1
2
var ages = [3, 10, 18, 20, 30, 40];
ages.findIndex((item)=>item>18) // 3

fill(value, start, end)用于将一个固定值替换数组的元素

参数 描述
value 必需。填充的值。
start 可选。开始填充位置。
end 可选。停止填充位置 (默认为 array.length)
1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("Runoob", 2, 4); //Banana,Orange,Runoob,Runoob

sort 数组排序

1
2
3
4
5
6
7
var a = ['Wind', 'Rain', 'Fire'];
a.sort();
console.log(a); // Fire,Rain,Wind

var b = [1,3,2,4];
b.sort((a,b)=>a-b); //1,2,3,4
b.sort((a,b)=>b-a); //4,3,2,1

indexOf 在数组中搜索元素并返回第一个符合项的索引

1
2
3
4
5
var a = ['a', 'b', 'a', 'b', 'a'];
console.log(a.indexOf('b')); // 1
// 从指定索引开始寻找
console.log(a.indexOf('b', 2)); // 3
console.log(a.indexOf('z')); // -1,因為找不到 'z'

lastIndexOf 类似indexOf ,但是该方法会从后往前找

1
2
3
4
5
var a = ['a', 'b', 'c', 'd', 'a', 'b'];
console.log(a.lastIndexOf('b')); // 5
// 从指定索引开始寻找
console.log(a.lastIndexOf('b', 4)); // 1
console.log(a.lastIndexOf('z')); // -1

forEach 调用数组的每个元素,并将元素传递给回调函数

1
2
var a = ['a', 'b', 'c'];
a.forEach(alert); // 依次打印每一个值

map(callback[, thisObject]) 按照原始数组元素顺序依次处理元素

1
2
3
var a1 = ['a', 'b', 'c'];
var a2 = a1.map(function(item) { return item.toUpperCase(); });
console.log(a2); // A,B,C

filter 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素

1
2
3
var a1 = ['a', 10, 'b', 20, 'c', 30];
var a2 = a1.filter(function(item) { return typeof item == 'number'; });
console.log(a2); // 10,20,30

every 方法用于检测数组所有元素是否都符合指定条件

1
2
3
4
5
function isNumber(value) { return typeof value == 'number'; }
var a1 = [1, 2, 3];
console.log(a1.every(isNumber)); // 警報 true
var a2 = [1, '2', 3];
console.log(a2.every(isNumber)); // 警報 false

some 用于检测数组中的元素是否满足指定条件

1
2
3
4
5
6
7
function isNumber(value) { return typeof value == 'number'; }
var a1 = [1, 2, 3];
console.log(a1.some(isNumber)); // 警報 true
var a2 = [1, '2', 3];
console.log(a2.some(isNumber)); // 警報 true
var a3 = ['1', '2', '3'];
console.log(a3.some(isNumber)); // 警報 false

reduce(callback, initialValue) 把数组值合并成一个值

1
2
3
var a = [10, 20, 30];
var total = a.reduce(function(x, y) { return x + y});
alert(total) // 60

reduceRight(callback, initialValue) 类似reduce 从最后一个元素开始

1
2
3
var a = [10, 20, 30];
var total = a.reduceRight(function(x, y) { return x + y});
alert(total) // 60

includes 用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

1
2
3
4
5
let site = ['runoob', 'google', 'taobao'];

site.includes('runoob'); // true

site.includes('baidu'); // false

isArray 用于判断一个对象是否为数组

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
Array.isArray(fruits); //true

keys 用于从数组创建一个包含数组键的可迭代对象

1
2
3
4
5
6
var fruits = ["Banana", "Orange", "Apple", "Mango"];
let key = fruits.keys();
key.next().value; //0
key.next().value; //1
key.next().value; //2
key.next().value; //3

from 将类数组转为数组

类似数组的对象:
必须有length属性 ,如果没有,转出的是空数组。所以任何有length属性的对象,都能通过这个方法转换为数组(此时扩展运算符…无法转换),length属性会决定转化的数组什么样子。

1
var myArr = Array.from("RUNOOB"); //["R", "U", "N", "O", "O", "B"]

toString 可把数组转换为字符串,并返回结果

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.toString(); //Banana,Orange,Apple,Mango

valueOf 返回 Array 对象的原始值

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var v = fruits.valueOf(); // ["Banana", "Orange", "Apple", "Mango"]