JS数组常用方法

Array数组类型

数组的每一项都可以保存任何类型的数据,创建数组的方法可以使用Array构造函数

var ary = new Array();

使用Array构造函数也可以省略new操作符

var colors = Array('red');  //创建一个包含一项,即字符串“red”的数组

创建数组也可以使用数组字面量表示法创建

var names = [];  //创建一个名为names的空数组
var colors = ['red','blue'];  //创建一个包含2个字符串的数组

转换方法

1.toString()

数组转字符串,数组调用toString()方法会返回一个以逗号分割的字符串,没有参数

var colors1 = ['red','blue','green'];
var colors2 = colors1.toString();
console.log(colors2);  // "red,blue,green"
2.join()

join()方法可以把数组转化成字串,join()只接收一个参数,即用作分隔符的字符串,返回一个以分隔符分割的字符串

var colors1 = ['red','blue','green'];
var colors2 = colors1.join('+');
console.log(colors2);  // "red+blue+green"

栈方法

3.push()

push()方法可以接收多个参数,把它们逐个插入到数组的末尾,返回值为修改后数组的长度,原数组会发生改变

var colors = ['red'];
var count = colors.push('blue','green');
console.log(count);  // 3
console.log(colors);  // ["red", "blue", "green"]
4.pop()

pop()的作用则与push()相反,pop()方法是从数组末尾删除最后一项,减少length值,返回被移除的项,原数组发生改变,可以用该方法获取数组最后一项

var colors = ['red','blue','green'];
var item= colors.pop();
console.log(item);  // "green"
console.log(colors);  // ["red", "blue"]

队列方法

栈数据的访问规则是后进先出,而队列结构的访问规则是先进先出。队列在列表的末端添加项,从列表的前端移除项。

5.shift()

shift()方法能够移除数组的第一项,并且返回该值,原数组的length长度减1,可以用该方法获取数组的第一项

var colors = ['red','blue','green'];
var item = colors.shift();
console.log(item);  // "red"
console.log(colors);  // ["blue", "green"]
6.unshift()

unshift()与shif()的用途相反,可以在数组的前端增加多项并返回新数组的长度,原数组发生改变

var colors = ['red'];
var count = colors.unshift('blue','green');
console.log(count);  // 3
console.log(colors);  // ["blue", "green", "red"]

重排序方法

7.reverse()

reverse()方法可以实现数组的翻转

var num = [1,2,3,4,5];
console.log(num.reverse());  //[5,4,3,2,1]
8.sort()

在默认情况下,sort()方法按排列数组项,小的在前,大的在后。sort()方法会调用toStriing()方法,然后比较得到的字符串,即使数组中每一项都是数值,比较的也是字符串

var num = [0,1,5,10,15];
console.log(num.sort());  //[0, 1, 10, 15, 5]

因此sort()方法可以接收一个比较函数作为参数

var num = [0,1,5,10,15];
num = num.sort(function compare(a,b){
   return a-b
});
console.log(num);  // [0, 1, 5, 10, 15]

如果要产生降序的结果,只需要把返回值的两个参数换一下位置就可以

var num = [0,1,5,10,15];
num = num.sort(function compare(a,b){
    return b-a
});
console.log(num);   // [15, 10, 5, 1, 0]

操作方法

9.concat()

cancat()可以实现数组的拼接,可以传递一到多个数组,如果传递的不是数组,这些值就会简单的添加到结果数组的末尾。如果concat()没有传递参数,则可以实现对原数组的复制

var colors = ['red','blue'];
var colors2 = colors.concat('yellow',['black','white']);
var colors3 = colors.concat();  //实现对原数组的复制
console.log(colors2);   // ["red", "blue", "yellow", "black", "white"]
console.log(colors3);   // ["red", "blue"]
console.log(colors);    // ["red", "blue"]
10.slice()

slice()可以接收一到两个参数,如果只有一个参数时,返回从该参数开始到当前数组末尾的所有项,两个参数时,返回从第一个参数开始到第二个参数之间的所有项,不包括结束位置的项,即包前不包后。slice()方法没有传递参数时可以实现对原数组的复制

var colors = ['red','blue','yellow','black','white'];
var colors2 = colors.slice(1);  //一个参数
var colors3 = colors.slice(1,3);  //两个参数
var colors4 = colors.slice();   //实现对原数组的复制
console.log(colors2);   // ["blue", "yellow", "black", "white"]
console.log(colors3);   // ["blue", "yellow"]
console.log(colors4);   // ["red", "blue", "yellow", "black", "white"]
console.log(colors);    // ["red", "blue", "yellow", "black", "white"]
11.splice()

splice()方法比较强大,可以实现数组的插入,删除和替换

  • 插入
    可以向指定位置插入多项,需要3个参数:起始位置,0,要插入的内容。如果要插入多项,可以再继续传入要插入的项返回一个空数组
var colors = ['red','blue'];
var values= colors.splice(1,0,'green','black');
console.log(colors);    // ["red", "green", "black", "blue"]
console.log(values);    // []
  • 删除
    可以从指定位置开始删除一到多个,需要两个参数:要删除第一项的位置,要删除的个数。返回被删除的内容,以一个行数组的形式返回
var colors = ["red", "green", "black", "blue","yellow"];
var values= colors.splice(1,3);
console.log(colors);    // ["red", "yellow"]
console.log(values);    // ["green", "black", "blue"]
  • 替换
    从指定位置删除多个,并同时插入多个,需要3个参数:起始位置,要删除的项数,要插入的内容。返回被删除的内容,以一个新数组的形式返回。
var colors = ["red", "green", "black", "blue","yellow"];
var values= colors.splice(1,2,"pink","purple","white");
console.log(colors);    // ["red", "pink", "purple", "white", "blue", "yellow"]
console.log(values);    // ["green", "black", "blue"]

如果splice()方法只传递一个参数“0”,可以实现对原数组的复制

var colors = ["red", "green", "black", "blue","yellow"];
var values = colors.splice(0);
console.log(values);  // ["red", "green", "black", "blue", "yellow"]

位置方法

12.indexOf()

indexOf()接收两个参数:要查找的内容和查找的起点位置的索引(可选)。indexOf()查找时是从前往后查找,查找到则返回对应位置索引,没有查找到返回-1。

var nums = [1,2,3,4,5,6];
var item1 = nums.indexOf(4);
var item2 = nums.indexOf(8);  //查找数组中不存在的项
console.log(item1); //3
console.log(item2); //-1
13.lastIndexOf()

lastIndexOf()接收两个参数:要查找的内容和查找的起点位置的索引(可选)。indexOf()查找时是从末尾往前查找,查找到则返回对应位置索引,没有查找到返回-1。

var nums = [1,2,3,4,5,6];
var item1 = nums.lastIndexOf(2);
var item2 = nums.lastIndexOf(8);  //查找数组中不存在的项
console.log(item1); //1
console.log(item2); //-1

迭代方法

14.forEach()

forEach()可以实现对数组的遍历,没有返回值,再回调函数中可以操作数组中的每一项及其对应的索引

var nums = [1,2,3,4,5,6];
nums.forEach(function (item,index,array){
  //执行某些操作
  //item为遍历的数组的每一项
  //index为为遍历的数组的每一项对应的索引
  //array为原数组
})
15.map()

map()也可以实现对数组的遍历,有返回值,回调函数可以返回一个数组

var nums = [1,2,3,4,5,6];
    var mapResult = nums.map(function (item,index,array){
        return item
    })
    console.log(mapResult);  // [1,2,3,4,5,6]
    原文作者:哎呦_連啓
    原文地址: https://www.jianshu.com/p/d327f1e8b079
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞