一、every
语法:array.every(function(currentValue,index,arr), thisValue)
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
注意: every() 不会对空数组进行检测。
注意: every() 不会改变原始数组。
浏览器兼容性: IE9及以上
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
document.getElementById("demo").innerHTML = ages.every(checkAdult);
}
输出结果为:
false
二、map
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
浏览器兼容性: IE9及以上
返回一个数组,数组中元素为原始数组的平方根:
var numbers = [4, 9, 16, 25];
function myFunction() {
x = document.getElementById("demo")
x.innerHTML = numbers.map(Math.sqrt);
}
输出结果为:
2,3,4,5
三、filter
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
浏览器兼容性: IE9及以上
实例
返回数组 ages 中所有元素都大于 18 的元素:
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
document.getElementById("demo").innerHTML = ages.filter(checkAdult);
}
输出结果为:
32,33,40
四、some
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
- 如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
浏览器兼容性: IE9及以上
实例
检测数组中是否有元素大于 18:
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
document.getElementById("demo").innerHTML = ages.some(checkAdult);
}
输出结果为:
true
五、indexof
找到某个元素在数组中的索引
fruits.push("Mango");
// ["Strawberry", "Banana", "Mango"]
var pos = fruits.indexOf("Banana");
// 1
六、lastIndexOf
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
如果要检索的字符串值没有出现,则该方法返回 -1。
该方法将从尾到头地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的结尾(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一个字符在 stringObject 中的位置。stringObject 中的字符位置是从 0 开始的。
实例
查找数组元素 “Apple”出现的位置:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");
a 输出结果:2
以上实例输出结果意味着 “Apple” 位于数组中的第 2 个位置.
七、toString
toString() 方法可把数组转换为字符串,并返回结果。
注意: 数组中的元素之间用逗号分隔。
实例
将数组转换为字符串:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.toString();
fruits 将输出:
Banana,Orange,Apple,Mango
八、valueOf
valueOf() 方法返回 Array 对象的原始值,该原始值由 Array 对象派生的所有对象继承。
valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
注意: valueOf() 方法不会改变原数组。
实例
valueOf() 是数组对象的默认方法。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var v=fruits.valueOf();
//fruits.valueOf()与 fruits返回值一样。
v 输出结果为:
Banana,Orange,Apple,Mango
九、shift
该方法把array的第—个元素移出数组,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,shift()将不进行任何操作,返回undefined。
该方法不创建新数组,而是直接修改原有的数组,返回的是所移除的元素。
var a = [1,2,3,4,5];
var b = a.shift(); //a:[2,3,4,5] b:1
十、unshift(value, …)
该方法将参数添加到原数组开头,并返回数组的长度。
该方法会修改原数组,返回的是修改后数组的长度length。
var a = [1,2,3,4,5];
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7
注意:在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法的返回值不可靠,需要用返回值时可用splice代替本方法来使用。
十一、pop
该方法删除原数组最后一个元素,数组的长度减1。
该方法会修改原数组,可以看作是把原数组的最后一个元素剪切下来了。
返回的是删除元素的值,如果数组为空则返回undefined。
var a = [1,2,3,4,5];
var b = a.pop(); //a:[1,2,3,4] b:5
十二、push
该方法是依次将参数添加到原数组末尾,要添加的值可以是一个或多个。
如果参数是一个数组,会将数组以一个元素的形式添加到原数组末尾。
该方法会修改原数组,返回值是新数组的长度length。
var a = [1,2,3,4,5];
var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7
十三、concat
该方法将后面的元素添加到前面数组的元素后面并以此为元素创建并返回一个新数组。
如果要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。即使有重复的元素,也不会去掉。
该方法并不会修改原数组,返回的是合并后的新数组。
var a = [1,2,3,4,5];
var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]
var b = a.concat([4,5],[6,7]) //返回 [1,2,3,4,5,4,556,7]
var b = a.concat(4, [5,[6,7]]) //返回 [1,2,3,4,5,4,5,[6,7]]
十四、splice(start,deleteCount,val1,val2,…)
- start —开始插入和(或)删除的数组元素的下标。
- deleteCount —从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。
- value, … —要插人数组的零个或多个值,从start所指的下标处开始插入。
该方法从start位置开始(包括start所指的元素在内)删除deleteCount项,并从该位置起插入val1,val2,…
该方法会修改原数组,返回的是所删除的元素所组成的数组。
var a = [1,2,3,4,5];
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]
var b = a.splice(0,1); //同shift
a.splice(0,0,-2,-1); var b = a.length; //同unshift
var b = a.splice(a.length-1,1); //同pop
a.splice(a.length,0,6,7); var b = a.length; //同push
十五、reverse
该方法颠倒数组中元素的顺序。
该方法会修改原数组,返回的是所得到的新数组。
var a = [1,2,3,4,5];
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]
十六、sort(orderfunction)
该方法将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。
如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:
- 如果根据你的评判标准,a小于b,在排序后的数组中a应该出现在b之前,返回一个小于0的值。
- 如果a等于b,就返回0。
- 如果a大于b,就返回一个大于0的值。
注意:数组中undefined的元素都排列在数组末尾。即使你提供了自定义的排序函数也是这样,因为undefined值不会被传递给你提供的orderfunc。
该方法会修改原数组,返回的是排序后的数组。
var a = [1,2,3,4,5];
var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]
十七、slice(start,end)
- start —数组片段开始处的数组下标。如果是负数,它声明从数组尾部开始算起的位置。 也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。
- end —数组片段结束处的后一个元素的数组下标。如果没有指定这个参数 包含从start开始到数组结束的所有元素。如果这个参数是负数, 从数组尾部开始算起的元素。
该方法返回从原数组中指定开始下标到结束下标之间的项组成的新数组,但是不包括end所指的元素。如果没有指定end,返回的数组包含从start开始到原数组结尾的所有元素。
该方法并不修改原数组,相当于复制,返回的是开始下标(包括)到结束下标(不包括)之间的项组成的新数组。
如果start和end均没有指定,则返回的数组和原数组相等。
事实上该方法同样可以用来处理字符串。
var a = [1,2,3,4,5];
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]
十八、join(separator)
该方法将数组的元素转换成一个字符串,以separator为分隔符把这些字符串连接起来,省略的话则用默认用逗号为分隔符。
该方法与String对象的split()方法刚好相反,split()方法把一个字符串分割成数组元素,返回的是一个数组。
该方法不会修改原数组,返回的是生成的字符串。
var a = [1,2,3,4,5];
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"