JavaScript数组API汇总
01、push()
:添加元素到数组的最后,返回新数组的长度(改变原数组)
let a = [1,2,3,4,5];
let result = a.push(6,7);
console.log(result);//7,返回数组的长度
console.log(a);//[1, 2, 3, 4, 5, 6, 7]
result = a.push('a','b');
console.log(result);//9,length:9
console.log(a);// [1, 2, 3, 4, 5, 6, 7, "a", "b"]
02、unshift()
:添加元素到数组的开头,返回新数组的长度(改变原数组)
let a = [1,2,3,4,5];
let result = a.unshift(-1,0);
console.log(result);//7,返回数组长度7
console.log(a);//[-1, 0, 1, 2, 3, 4, 5]
result = a.unshift('a','b','c');
console.log(result);//length:10
console.log(a);//["a", "b", "c", -1, 0, 1, 2, 3, 4, 5]
03、pop()
:删除数组中最后一个元素,返回被删除的元素(改变原数组)
let a = [1,2,3,4,5];
let result = a.pop();
console.log(result);//5,删除数组中最后一个元素,返回被删除的元素
console.log(a);// [1, 2, 3, 4]
result = a.pop();
console.log(a);//[1, 2, 3]
let b = [];
var r = b.pop();
console.log(r);//undefined,数组为空返回undefined
console.log(b);//[],返回空数组
04、shift()
:删除数组第一个元素,返回被删除的元素(改变原数组)
let a = [1,2,3,4,5];
let result = a.shift();
console.log(result);//1,删除数组中第一个元素,返回被删除的元素
console.log(a);// [2, 3, 4, 5]
result = a.shift();
console.log(a);// [3, 4, 5],改变原数组
let b = [];
var r = b.shift();
console.log(r);//undefined,数组为空返回undefined
console.log(b);//[],返回空数组
05、join(value)
:将数组用value连接为字符串,返回被连接后的字符串(不改变原数组)
let a = [1,2,3,4,5];
let result = a.join();
console.log(result);//1,2,3,4,5
result = a.join('');
console.log(result);//12345
result = a.join(',');
console.log(result);//1,2,3,4,5
result = a.join('&');
console.log(result);//1&2&3&4&5
06、reverse()
:反转数组,返回反转后的新数组(改变原数组)
let a = [1,2,3,4,5];
let result = a.reverse();
console.log(result);//[5, 4, 3, 2, 1]
console.log(a);//[5, 4, 3, 2, 1]
07、slice(start, end)
:获取子数组,包含原数组索引start的值到索引end的值,不包含end,返回获取的子数组(不改变原数组)
let a = [1, 2, 3, 4, 5]
let result = a.slice(2, 4);
console.log(result); // [3, 4],返回的新数组,从下标为2的位置开始,到下标为4(不包含4)的位置结束
console.log(a); // [1, 2, 3, 4, 5],不改变原数组
08、splice(index, count, value1, value2....)
:从索引位index处删除count个元素,插入value1, value2等元素,返回被删除的元素组成的新数组(改变原数组)
3个参数
let a = [1, 2, 3, 4, 5];
let result = a.splice(1, 2, 0);//从下标为1的位置,删除2个元素,插入元素0
console.log(result); // [2, 3],返回被删除的元素组成的新数组
console.log(a); // [1, 0, 4, 5]//改变原数组
1个参数
var a = [1, 2, 3, 4, 5]
console.log(a.splice(2)) // [3, 4, 5] 当参数为单个且不小于0时,将截取从index位到数组的末尾
console.log(a) // [1,2]
2个参数,第一个参数为负
var a = [1, 2, 3, 4, 5]
console.log(a.splice(-2, 2)) // [4, 5] 从倒数第2位开始截取两个元素
console.log(a) // [1, 2, 3]
09、sort()
:对数组元素进行排序,返回排序后的新数组(改变原数组)
let a = [31, 22, 27, 1, 9]
let result = a.sort()
console.log(result) // [1, 22, 27, 31, 9]
console.log(a) // [1, 22, 27, 31, 9]
a = ['c', 'ac', 'ab', 'A1', '1c', 13, 12, '13', '12', '3', '2', '1b', '1a', 1, 'aa', 'a', 3, 'b', 2]
a.sort()
console.log(a) // [1, 12, "12", 13, "13", "1a", "1b", "1c", "2", 2, "3", 3, "A1", "a", "aa", "ab", "ac", "b", "c"]
// 可以看出sort排序是根据每个字符对应的ASCII码值进行排序的,而非值的大小。
// 先比较第一位的ASCII码值,如果第一位的ASCII码值相同,则开始比较第二位的ASCII码值,以此类推
// ASCII码表
a = [31, 22, 27, 1, 9]
a.sort((a, b) => {
return a - b
})
console.log(a) // [1, 9, 22, 27, 31] 按数值大小正序排列
a = [31, 22, 27, 1, 9]
a.sort((a, b) => {
return b - a
})
console.log(a) // [31, 27, 22, 9, 1] 按数值大小倒序排列
10、toString()
:将数组中的元素用逗号拼接成字符串,返回拼接后的字符串(不改变原数组)
let a = [1,2,3,4,5];
let result = a.toString();
console.log(result);// 1,2,3,4,5 ;将数组用','分割转为字符串
console.log(a);//[1, 2, 3, 4, 5],不改变原数组
11、indexOf(value)
:从索引为0开始,检查数组中是否包含有value,有则返回匹配到的第一个索引,没有则返回-1(不改变原数组)
let a = [1,2,3,4,5];
let result = a.indexOf(2);//检查数组中是否包含2
console.log(result);//1,匹配到2返回2的索引位置
console.log(a);//[1, 2, 3, 4, 5],不改变原数组
result = a.indexOf(10);
console.log(result);//-1,匹配不到返回-1
console.log(a);//[1, 2, 3, 4, 5],不改变原数组
12、lastIndexOf(value)
:从最后的索引开始,检查数组是否包含value,有则返回匹配到的第一个索引,没有返回-1(不改变原数组)
let a = [1,2,3,4,2,5];
let result=a.lastIndexOf(2);
console.log(result);//4,从数组最后向前查找,返回匹配到的第一个索引
result=a.lastIndexOf(6);
console.log(result);//-1,匹配不到返回-1
console.log(a);//[1, 2, 3, 4, 2, 5],不改变原数组
13、concat(value)
:将数组和(或)值连接成新数组,返回新数组(不改变原数组)
let a=[1,2],b=[3,4],c=5;
let result=a.concat(b,c);
console.log(result);// [1, 2, 3, 4, 5],返回拼接后的新数组
console.log(a);// [1, 2],不改变原数组
console.log(b);// [3, 4],不改变原数组