数组常用方法汇总

基础


join

将数组中的元素转化为字符串并连接在一起,默认以逗号分隔元素,可以自定义分隔符,返回最终连接在一起的字符串。

    var arr = [1,2,3,4];
    console.log(arr.join());    // 打印:"1,2,3,4,"。默认使用逗号隔开。
    var arr = [1,2,3,4];
    console.log(arr.join("-")); // 打印:"1-2-3-4"。指定只用"-"隔开。
    var arr = [1,2,3,4];
    console.log(arr.join(""));  // 打印:"1234"。使用空字符串时,字符之间没有分隔符。
    -------------------------------------------------------------------------
    var arr = [1,2,3,[4,5,6]];
    console.log(arr.join());   // 打印:"1,2,3,4,5,6"。多维数组,会保留其中的逗号。
    var arr = [1,2,3,[4,5,6]];
    console.log(arr.join("")); // 打印:"1234,5,6"。多维数组,会保留其中的逗号。
    var arr = [1,2,3,[4,5,6]];
    console.log(arr.jon("-")); // 打印:"1-2-3-4,5,6"。多维数组,会保留其中的逗号。

reverse

将数组中的元素颠倒顺序,并返回改变后的数组。

var arr = [1,2,3];
console.log(arr.reverse()); // 打印:[3,2,1]。改变原数组。

sort

将数组中的元素排序并返回排序后的数组,默认按照元素字母顺序。

自定义排序规则:
1.返回 > 0,第一个参数应该在第二个参数后面;
2.返回 < 0,第一个参数应该在第二个参数前面;
3.返回 = 0,位置不变

var arr = [2,1,3];
console.log(arr.sort());    // 打印:[1,2,3]。改变原数组。
-------------------------------------------------------------------------
var arr = [undefined,2,1,'A'];
console.log(arr.sort()); // 打印:[1,2,'A',undefined]。当数组中存在undefined时,排序后会将undefined放到数组的最后。
-------------------------------------------------------------------------
var arr = [33,4,1111,222];
console.log(arr.sort()); // 打印:[1111,222,33,4]。由于没有指明compareFunction,因此在比较时,数字会先被转换为字符串然后再做比较。
arr.sort(function(a,b){
    return a - b;
})
console.log(arr);       // 打印:[4,33,222,1111]。
arr.sort(function(a,b){
    return b - a;
})
console.log(arr);      // 打印:[1111,222,33,4]。

concat

用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

var arr = [1,2,3];
console.log(arr.concat(4,5,6));           // 打印:[1,2,3,4,5,6]。
var arr = [1,2,3];
console.log(arr.concat([4,5,6]));         // 打印:[1,2,3,4,5,6]。
var arr = [1,2,3];
console.log(arr.concat([4,5],[6,7]));     // 打印:[1,2,3,4,5,6,7]。
var arr = [1,2,3];
console.log(arr.concat([4,5,6,[7,8,9]])); // 打印:[1,2,3,4,5,6,[7,8,9]]。

slice

返回指定数组的一个片段或子数组。它的两个参数分别表示开始位置和结束位置,但不包括结束位置上的元素。

var arr = [1,2,3,4,5];
console.log(arr.slice(1,3)); // 打印:[2,3]。
var arr = [1,2,3,4,5];
console.log(arr.slice(3));   // 打印:[4,5]。

splice

删除现有元素和/或添加新元素来修改数组,并返回原数组中被修改的内容。

var arr = [1,2,3,4];
console.log(arr.splice(2));         // 打印:[3,4],此时arr=[1,2]。
var arr = [1,2,3,4];
console.log(arr.splice(1,2));       // 打印:[2,3],此时arr=[1,4]。
var arr = [1,2,3,4];
console.log(arr.splice(0,0,5,6));   // 打印:[],此时arr=[5,6,1,2,3,4]。
var arr = [1,2,3,4];
console.log(arr.splice(0,0,[5,6])); // 打印:[],此时arr=[[5,6],1,2,3,4]。splice()会插入数组本身并非数组中的元素,此特性与 concat()不同。

push

在数组末尾插入一个或多个元素,并返回数组新的长度。

var arr = [1,2];
console.log(arr.push(3));     // 打印:3,此时arr=[1,2,3]。
var arr = [1,2];
console.log(arr.push(3,4,5)); // 打印:5,此时arr=[1,2,3,4,5]。

pop

删除数组末尾一个元素,返回被删除的元素,改变数组长度。

var arr = [1,2,3,4,5];
console.log(arr.pop());     // 打印:5,此时arr=[1,2,3,4]。

unshift

在数组的头部插入一个或多个元素并返回数组新的长度。

var arr = [];
console.log(arr.unshift(1));     // 打印:1,此时arr=[1]。
var arr = [];
console.log(arr.unshift(1,2,3)); // 打印:3,此时arr=[1,2,3]。

shift

在数组的头部删除一个元素,返回被删除的元素,改变数组长度。

var arr = [1,2];
console.log(arr.shift());     // 打印:1,此时arr=[2]。

toString

将每个元素转换为字符串,并且输出用逗号分隔的字符串列表。与不使用任何参数调用join()方法返回的字符串一样。

var arr = [1,2,3,4,5];
console.log(arr.toString());  // 打印:"1,2,3,4,5"。

ES5新增

isArray

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

console.log(Array.isArray([1, 2, 3]));  // 打印:true。
console.log(Array.isArray({foo: 123})); // 打印:false。
console.log(Array.isArray("foobar"));   // 打印:false。
console.log(Array.isArray(undefined));  // 打印:false。

indexOf

返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。查找顺序:从前往后。

var arr = ['apple', 'banana', 'pear'];
console.log(arr.indexOf('pear'))      // 打印:2。
-------------------------------------------------------------------------
var arr = ['apple', 'banana', 'pear'];
console.log(arr.indexOf('pear', 1))   // 打印:2。从数组第2个位置开始查找
-------------------------------------------------------------------------
var arr = ['apple', 'banana', 'pear'];
console.log(arr.indexOf('pear', 10))  // 打印:2。当查询位置大于或等于数组长度时,返回-1,不查找数组。
-------------------------------------------------------------------------
var arr = ['apple', 'banana', 'pear'];
console.log(arr.indexOf('pear', -2))  // 打印:2。其中-2表示从倒数第二个位置开始查找。若不改变查询顺序,还是默认按照从前往后查找。

lastIndexOf

返回在数组中可以找到一个给定元素的最后一个索引,如果不存在,则返回-1。查找顺序:从后往前。

var arr = ['apple', 'banana', 'pear', 'apple'];
console.log(arr.lastIndexOf('apple')) // 打印:3。
-------------------------------------------------------------------------
var arr = ['apple', 'banana', 'pear', 'apple'];
console.log(arr.indexOf('apple', 1)) // 打印:0。从数组第2个位置开始先前查找
-------------------------------------------------------------------------
var arr = ['apple', 'banana', 'pear', 'apple'];
console.log(arr.indexOf('apple', 10)) // 打印:3。其中10大于数组长度,则查找整个数组
-------------------------------------------------------------------------
var arr = ['apple', 'banana', 'pear', 'apple'];
console.log(arr.indexOf('apple', -2)) // 打印:3。其中-2表示从数组末尾向前的偏移量。查找顺序还是从后往前。
-------------------------------------------------------------------------
var arr = ['apple', 'banana', 'pear', 'apple'];
console.log(arr.indexOf('apple', -10)) // 打印:-1。当负数的绝对值大于数组长度时,会返回-1,不查找数组。

every

检测数组中所有元素是否满足条件

var arr = [11, 24, 35, 30];
var result = arr.every(function(item) {
    return item > 10;
});
console.info(result); // 打印:true。检测数组中每个数字是否大于10
-------------------------------------------------------------------------
var arr = [11, 24, 35, 30];
arr[10] = 40;
var result = arr.every(function(item, index) {
    console.info(index);
    return item > 10;
});
console.info(result); // 打印:0,1,2,3,10,true。every只会为被赋了值的索引调用回调函数。

some

检测数组中是否有一个元素满足条件

var arr= [1, 5, -3, 4, 7];
var result = arr.some(function(item, index) {
    return item < 0;
});
console.info(result); // 打印:true。检测数组中是否存在小于0的数字

forEach

对数组中每个元素执行特定的方法

var arr = ['a', 'b', 'c', 'd'];
arr.forEach(function(item){
    console.info(item);
}); // 总是返回undefined,且不可中止或跳出forEach循环,除了抛出异常。

map

对数组中每个元素进行一定的操作后,返回新的数组

var arr = [2, 4, 6, 8, 10];
var newArr = arr.map(function(item) {
    return item * 2;
});
console.log(newArr); // 打印:3,8,12,16,20。

filter

对数组中每一个元素进行条件筛选,返回新的数组

var arr = [1,2,3,4,5,6,7];
var newArr = arr.filter(function(item) {
    return item % 2 === 0;
});
console.log(newArr);

reduce

对数组中每个元素执行特定的方法,最终返回累计处理的结果。升序

var arr = [1, 2, 3, 4];
var count = arr.reduce(function(accumulator, currentValue) {
    return accumulator + currentValue;
});
console.log(count); // 打印:10。accumulate:累计器。currentValue:当前值。按照升序执行回调函数,并且若没有提供initialValue时,第一次执行函数时,accumulator为数组第一个元素,currentValue为第二个元素。此后,accumulator为每次的累计值。
-------------------------------------------------------------------------
var arr = [1, 2, 3, 4];
var count = arr.reduce(function(accumulator, currentValue) {
    return accumulator + currentValue;
}, 5);
console.log(count); // 打印:15。此处提供了一个initialValue值,作为第一次执行函数时的accumulator的值。

reduceRight

对数组中每个元素执行特定的方法,最终返回累计处理的结果。降序

var arr = [[0, 1], [2, 3], [4, 5], [6, 7]];
var arr2 = arr.reduceRight(function(accumulator, currentValue) {
    return accumulator.concat(currentValue);
});
console.log(arr2); // 打印:[6, 7, 4, 5, 2, 3, 0, 1]。用法与reduce一样
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值