先看一下es5中的array方法把
value | desciption |
---|---|
every() | 检测数值元素的每个元素是否都符合条件。 |
some() | 检测数组元素中是否有元素符合指定条件 |
filter() | 检测数值元素,并返回符合条件所有元素的数组。 |
foreach() | 数组每个元素都执行一次回调函数。 |
map() | 通过指定函数处理数组的每个元素,并返回处理后的数组。 |
indexOf | 搜索数组中的元素,并返回它所在的位置。 |
lastIndexOf | 搜索数组中的元素,并返回它最后出现的位置。 |
reduce() | 将数组元素计算为一个值(从左到右) |
reduceRight() | 将数组元素计算为一个值(从右到左)。 |
some与接下里的every正好相对,some是只要数组中的某个值,符合你给定的判断条件就返回true,而every则是数组中的所有值都符合你给定的判断条件的时候才会返回true,否则就返回false,也就是说两个方法最后得到的都是true or false
比如:
var arr = [0, 1, 2, 3, 4, 5];
var result = arr.some(function (e, i, array) {
if (e === 3) {return true};
});
// output
true // result;
var arr = [0, 1, 2, 3, 4, 5];
var result2 = arr.every(function (e, i, array) {
if (e > 3) {return true};
});
// output
false // result;
reduce和reduceRight
都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
传给 reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
下面代码用reduce()实现数组求和,数组一开始加了一个初始值10。
var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
},10);
console.log(sum); //25
常用的array方法:
indexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。
lastIndexOf:接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。
这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回1。在比较第一个参数与数组中的每一项时,会使用全等操作符。
var arr = [1,3,5,7,7,5,3,1];
console.log(arr.indexOf(5)); //2
console.log(arr.lastIndexOf(5)); //5
console.log(arr.indexOf(5,2)); //2
console.log(arr.lastIndexOf(5,4)); //2
console.log(arr.indexOf("5")); //-1
1.push
作用:像数组的末尾添加一项或多项元素
参数:要添加的项
返回值:新数组的长度
是否改变原数组:改变
2、pop
作用:删除数组的最后一项
参数:无
返回值:被删除的项
是否改变原数组:改变
3、shift
作用:删除数组的首项
参数:无
返回值:被删除的项
是否改变原数组:改变
4、unshift
作用:向数组的开头添加一或多项
参数:要添加的项,多项用’,'隔开
返回值:新数组的长度
是否改变原数组:改变
5、splice
作用:增删改
参数:
ary.splice(index,howmany,item1,…,itemX)
返回值:删除的项
是否改变原数组:改变
ary.splice(n,0,x,…,y);
从数组的索引n开始,删除0项,在索引n的前边增加新的项,第三个参数开始都是用来填补删除的项目位置的
6、slice(含头不含尾)
作用:截取数组(复制数组)
参数:array.slice(start, end)
返回值:返回一个新数组
是否改变原数组:不改变
var ary = [1,2,3,4,5];
var res = ary.slice(1,3);
var res2 = ary.slice(-3,-1)
console.log(ary); // [1,2,3,4,5]
console.log(res); // [2,3]
console.log(res2) //[3,4] slice支持负参数,从最后一项开始算起,-1为最后一项,-2为倒数第二项
slice(n) //从索引n开始复制到最后一项
slice()、 slice(0) //复制整个数组
7、join
作用:用指定的分隔符将数组每一项拼接为字符串
参数:指定的分隔符,如果省略该参数,则使用逗号作为分隔符
返回值:拼接好的字符串
是否改变原数组:不改变
8、 sort
作用:对数组的元素进行排序
参数:可选(函数) 规定排序规则 默认排序顺序为按字母升序
返回值:排好序的原数组
是否改变原数组:改变
9、 concat
作用:用于连接两个或多个数组
参数:参数可以是具体的值,也可以是数组对象。可以是任意多个
返回值:返回连接后的新数组
是否改变原数组:不改变
10、 reverse
作用:倒序数组
参数:无
返回值:倒序后的原数组
是否改变原数组:改变
11、findIndex :
作用:查找指定元素的位置
参数:array.indexOf(item,start) item:查找的元素 start:字符串中开始检索的位置
返回值:返回第一次查到的索引,未找到返回-1
是否改变原数组: 不改变