-
push
可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后数组的长度。
-
pop
从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
var color = new Array();
var count = color.push('red', 'green');
console.log(count); //2
var item = color.pop();
console.log(item); // green
console.log(color.length); //1
-
shift
移除数组中的第一项并返回该项,同时将数组长度减1
var color = new Array();
var count = color.push('red', 'green');
console.log(count); //2
var item = color.shift();
console.log(item); // red
console.log(color.length); //1
-
unshift
在数组的前端添加任意个项并返回新的数组的长度。
var color = new Array();
var count = color.unshift('red', 'green');
console.log(count); //2
var item = color.pop();
console.log(item); // green
console.log(color.length); //1
-
reverse
反转数组项的顺序。
var value = [1, 2, 3, 4, 5];
value.reverse();
console.log(value); // [5,4,3,2,1]
-
sort
在默认情况下,sort方法按照升序排列数组项,即最小的值位于最前面,最大的排在最后面。为了实现排序,sort方法会调用每个数组项的toString转型方法,然后比较得到的字符串,以确定如何排序。即使数组中每一项都是数值,sort方法比较的也是字符串。
var value1 = [0, 1, 5, 10, 15];
value1.sort();
console.log(value1); // [ 0, 1, 10, 15, 5]
数值5虽然小于10,但是进行字符串比较时,‘10’则位于‘5’的前面,于是数组的顺序就被修改了。
**因此sort方法可以接收一个比较函数作为参数。
sort详解请看: 数组的sort方法详解
-
concat
基于当前数组中的所有项创建一个新数组。具体来说,这个方法会先创建一个当前数组的副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。
(1)在没有给从concat传递参数的情况下,它只是复制当前数组并返回副本。
(2)如果传给concat的是一或多个数组,该方法会将这些数组中的每一项都添加到结果数组中。
(3)如果传递的值不是数组,这些值就会简单的添加到结果数组的末尾。
注意:concat不会影响原始数组
var color1=['red','yellow','blue'];
var color2=color1.concat('green',['black','brown']);
console.log(color1); //[ 'red', 'yellow', 'blue' ]
console.log(color2); // [ 'red', 'yellow', 'blue', 'green', 'black', 'brown' ]
-
slice
基于数组中的一或多个项创建一个新数组。接收一个或者两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,返回从该参数指定位置到当前参数末尾的所有项。如果有两个参数,返回起始和结束位置之间的项,但是不包括结束位置的项。
注意:slice不会影响原始数组
var color3 = ['red', 'yellow', 'blue', 'purple'];
var colorsp1 = color3.slice(1);
var colorsp2 = color3.slice(1, 4);
console.log(color3); //[ 'red', 'yellow', 'blue', 'purple' ]
console.log(colorsp1); // [ 'yellow', 'blue', 'purple' ]
console.log(colorsp2); // [ 'yellow', 'blue', 'purple' ]
-
splice
(1)删除:提供两个参数,要删除第一项的位置和要删除的项数
(2)插入:提供三个参数,起始位置、0(要删除的项数)、要插入的项,如果要插入多个项,可以再传入第四,第五个以至多个参数
(3)替换:提供三个参数,起始位置、要删除的项数和要插入的任意项,插入的项数和删除的项数不必相等。
splice始终都会返回一个数组,该数组中包含从原始数组中删除的项,如果没有删除项,返回空数组。
var colors = ['red', 'green', 'blue'];
var removed = colors.splice(0, 1);
console.log(colors); //[ 'green', 'blue' ]
console.log(removed); //[ 'red' ]
removed = colors.splice(1, 0, 'yellow', 'orange');
console.log(colors); //[ 'green', 'yellow', 'orange', 'blue' ]
console.log(removed); //[]
removed = colors.splice(1, 1, 'purple', 'pink');
console.log(colors); //[ 'green', 'purple', 'pink', 'orange', 'blue' ]
console.log(removed); //[ 'yellow' ]
-
indexOf和lastIndexOf
这两个方法都接收两个参数,要查找的项数和表示查找起点位置的索引。indexOf从数组的开头开始向后查找,lastIndexOf从数组的开头向前查找。都返回要查找的项在数组中的位置,在没找到的情况下返回-1。
var numbers = [1, 2, 3, 4, 5, 6, 7];
console.log(numbers.indexOf(4)); //3
console.log(numbers.lastIndexOf(4)); //3
ECMAScript定义了5个数组迭代的方法,每个方法都接收两个参数,要在每一项上运行的函数和运行该函数的作用域对象--影响this的值。传入这些方法的函数会接收三个参数,数组的项的值、该项在数组中的位置和数组对象本身。
-
every
对数组中的每一项运行给定函数,如果该函数的每一项都返回true,则返回true。
-
filter
对数组中的每一项运行给定函数,返回该函数会返回true的项的组成的数组。
-
forEach
对数组中的每一项运行给定函数,没有返回值。
-
map
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
-
some
对数组中的每一项运行给定函数,如果该函数的任一项都返回true,则返回true。
var number = [1, 2, 3, 4, 5, 4, 3, 2, 1];
var everyRes = number.every(function (item, index, array) {
return (item > 2);
})
console.log(everyRes); // false
var someRes = number.some(function (item, index, array) {
return (item > 2);
})
console.log(someRes); //true
var filterRes = number.filter(function (item, index, array) {
return (item > 2);
})
console.log(filterRes); //[ 3, 4, 5, 4, 3 ]
var mapRes = number.map(function (item, index, array) {
return item * 2;
})
console.log(mapRes); //[ 2, 4, 6, 8, 10, 8, 6, 4, 2 ]
number.forEach(function (item, index, array) {
// 执行某些操作
})
-
reduce和reduceRight
缩小数组。迭代数组的所有项,然后构件一个最终返回的值。reduce方法从数组的第一项开始,逐个遍历到最后,reduceRight从数组的最后一项开始,向前遍历到第一项。
都接收两个参数,一个在每一项上调用的函数和作为缩小基础的初始值(可选)。传给reduce和reduceRight的函数接收四个参数,前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项,第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
var values = [1, 2, 3, 4, 5];
var sum = values.reduce(function (prev, cur, index, array) {
return prev + cur;
})
console.log(sum); //15
除方向外,reduce和reduceRight完全相同。
参考:《javaScript高级程序设计》
网友评论