数组常见方法(学习ing)

栈方法

Array.push()

  • ECMAScript提供了push(),pop()方法,来实现模拟了栈的推入弹出(后进先出)。
  • push()方法接受任意数量的参数,并把它们逐个添加到数组末尾,并返回修改后的数组长度

Array.pop()

  • pop()方法则从数组末尾移除最后一项,然后返回移除的项
  • 这两个对栈的模拟方法均是在原数组上进行修改。
var colors = ["black", "white"];
colors.push("blue")     //["black", "white", "blue"]
colos.pop()         //["white", "blue"]

队列方法

Array.shift()

  • shift()与pop()方法类似,不过是移除数组首项,并返回移除的项

Array.unshift()

  • unshift()与push()类似,从数组首项添加元素,并返回修改后数组长度
var colors = ["black", "white"];
colors.shift("blue")     //["white"]与push()方法可以像队列一样使用数组
colos.unshift("blue")         //["blue","black", "white"]

重复排序方法

Array.reverse()

  • reverse()方法返回反转后数组
var numbers = [1, 2, 3, 4, 5];
numbers.reverse()   //[5, 4, 3, 2, 1]

Array.sort()

  • sort()方法按升序方法排列数组项。但是,为了实现排序,sort()方法会调用每个数组项的toString()方法,然后进行排序。下面代码的输出可以看见这个问题,这种排序方式在很多情况下并不是最佳方案,因此sort()方法可以接收一个比较函数作为参数.并返回修改后的数组,reverse()方法类似。
var numbers = [0, 1, 5, 10, 15]
numbers.sort()  //[0, 1, 10, 15, 5]
function copmare(value1, value2)
{
	if(value1 < value2)
	{
		return -1;
	}else if (value1 > value2)
	{
		return 1;
	}else 
	{
		return 0;
	}
}
numbers.sort(compare)  //[0, 1, 5, 10, 15]

操作方法

Array.concat()

  • concat()方法基于当前数组中的所有项创建一个新的数组。执行concat()方法时首先会创建一个当前数组的副本,然后将传递参数添加到数组末尾,并返回这个数组
var numbers1 = [1, 2, 3, 4];
var numbers2 = numbers1.concat(4, [5, 6]) //[1, 2, 3, 4, 4, 5, 6]

Array.slice()

  • slice()方法基于当前数组中的一项获多项创建一个新数组,slice()方法接受1或2个参数。一个参数时,返回该位置到数组末尾的所有项。两个参数时,返回start-end中间的所有项。注意slice()方法不会修改原数组
  • 如果传入参数是负值,则用数组长度加上参数即为位置
var numbers = [1, 2, 3, 4, 5];
numbers.slice(1);				//2, 3, 4, 5
numbers.slice(1, 3);			//2, 3, 4
console.log(numbers)			//1, 2, 3, 4, 5

Array.splice()

  • 删除:splice(index, len)第一次项的位置和修改的项数
  • 插入:splice(index, 0, string)插入的位置,插入的内容
  • 替换:splice(index, len, string)替换的位置,长度和内容
  • splice()方法在原数组上进行操作,并返回被替换的内容数组
var numbers = [1, 2, 3, 4, 5];
var numbers1 =  numbers.splice(0, 1);       //删除第一项 [1]
var numbers2 = numbers.splice(0, 0, 1);     //从位置0插入一项,返回的是空数值
var numbers3 = numbers.splice(1, 1, 3);      //从位置1开始修改1项, [2]

位置方法

Array.indexOf()

  • 接受两个参数:要查找的项和(可选的)表示查找起点位置的索引。找到后返回index,为找到则返回-1。
var numbers = [1, 2, 3, 4, 5];
numbers.indexOf(1)      //0
numbers.indexOf(0)       //-1

Array.lastIndexOf()

  • 与indexOf()类似,只是从后往前找

迭代方法

  • 每个迭代方法都接受两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域(影响this的值)所有迭代方法均对数组的每一项运行指定函数

Array.every()

  • 如果对每一项都返回true,则返回true

Array.filter()

  • 返回该函数会返回true的项组成的数组

Array.forEach()

  • 没有返回值

Array.map()

  • 返回每次函数调用结果组成的数组

Array.some()

  • 如果对任意一项返回true,则返回true

归并方法

Array.reduce()

Array.reduceRight()

猜你喜欢

转载自blog.csdn.net/studyForWhat/article/details/82910659