常用方法
- toString():把数组转换成字符串(逗号分隔)
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.toString()); //Banana,Orange,Apple,Mango
- join():将所有数组元素结合为一个字符串,可以规定分隔符,默认用逗号隔开;join(“”) 表示将所有元素之间的间隔去掉;
join(“|”) 表示将所有的元素用 | 隔开;
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.join("*")); //Banana*Orange*Apple*Mango
- pop():删除数组中的最后一个元素并返回这个元素
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.pop()); //Mango
- push():向数组的末尾添加一个新元素,返回新数组的长度
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.push("Kiwi")); //5
console.log(fruits); //["Banana", "Orange", "Apple", "Mango", "Kiwi"]
- shift():删除数组中的第一个元素并返回这个元素
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.shift()); //Banana
console.log(fruits); //["Orange", "Apple", "Mango"]
- unshift():向数组的开头添加新元素,返回新数组的长度
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.unshift("Lemon")); //5
console.log(fruits); //["Lemon", "Banana", "Orange", "Apple", "Mango"]
- 利用索引号修改元素
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[0] = "Kiwi";
//把数组中下标为 0 的元素换成 “Kiwi”
console.log(fruits); //["Kiwi", "Orange", "Apple", "Mango"]
- 利用数组的 length 属性在末尾添加新元素
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruit.length] = "Lemon";
//向数组末尾添加一个新元素 “Lemon”
console.log(frutis); //["Banana", "Orange", "Apple", "Mango", "Lemon"]
- splice():向数组指定位置添加新元素
第一个参数定义要添加的元素的位置;
第二个参数(0)定义删除多少元素;
其余参数定义要添加的新元素(返回被删除的元素)
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi");
//在数组下标为 2 的位置添加两个新元素:"Lemon", "Kiwi"
console.log(fruits); //["Banana", "Orange", "Lemon", "Kiwi", "Apple", "Mango"]
- splice():删除数组中指定位置的元素
第一个参数定义要删除的元素位置
第二个参数定义要删除的元素数量
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(1, 2);
//从 fruits 中下标为 1 的元素开始,往后删除 2 个元素,即删除 "Orange", "Apple"
console.log(fruits); //["Banana", "Mango"]
- concat():合并现有数组,创建并返回一个新数组
示例一:连接2个数组
var a = [1, 2, 3];
var b = [4, 5];
var c = a.concat(b);
//合并 a,b 数组中的元素,组成新数组 C
console.log(c); //[1, 2, 3, 4, 5]
示例二:连接3个数组
var arr1 = [1, 22, 333]
var arr2 = ["a", "b"]
var arr3 = ["Ming"]
var arr = arr1.concat(arr2, arr3);
//把 arr1, arr2 和 arr3 连接在一起,组成一个新数组 arr
console.log(arr); //[1, 22, 333, "a", "b", "Ming"]
- slice():把数组中的指定元素取出来,组成一个新数组,可以传 2 个参数;
第一个参数表示从这个下标开始截取,如果第二个参数不写的话,就取到最后;
示例:
var arr = [1, 2, 3, 4, 5];
var cut = arr.slice(2);
//把数组 arr 里面的 3, 4, 5 截取出来,组成新数组 cut
console.log(cut); //[3, 4, 5]
第二个参数为结束参数,表示截取到它前面一个元素为止;
示例:
var arr = [1, 2, 3, 4, 5];
var cut = arr.slice(1,4);
//把数组 arr 里面的 2, 3, 4 截取出来,组成新数组 cut
console.log(cut); //[2, 3, 4]
(注意:如果第一个参数比第二个参数大,则返回一个空数组;如果第一个参数是负数,就从后往前数。)
- sort():对数组的元素进行排序,比较的是元素对应的ASCⅡ码值
示例:
var arr = [55, "cc", 3, "whe", "ger", 101];
console.log(arr.sort()); //[101, 3, 55, "cc", "ger", "whe"]
如果要按照其他标准排序,就需要借助比较函数;
示例一(按大小顺序排序):
var arr = [43, 5, 122, 32, 16];
function sortNumber(a, b){
//从小到大排序
return a - b;
//从大到小排序
//return b - a; => [122, 43, 32, 16, 5]
}
console.log(arr.sort(sortNumber)); //[5, 16, 32, 43, 122]
示例二(随机排序):
var arr = [23, 8, 67, 199, 5];
arr.sort(function(){
return Math.random() - 0.5;
//得到一个随机的正负数来控制顺序
});
console.log(arr); //[ 67, 5, 23, 8, 199 ]
- reverse():将原数组倒序排列,返回新的排列后的数组
示例:
var arr = [1, 2, 3, 4]
console.log(arr.reverse()); //[4, 3, 2, 1]
ES5新增方法
- Array.isArray():判断是否是数组,返回布尔值
var arr = [1, 2, 3];
console.log(Array.isArray(arr)); //true
var arr1 = 1234;
console.log(Array.isArray(arr1)); //false
- forEach():遍历数组,本质上是一个 for循环,接收两个参数:
第一个参数是回调函数,function(value, index, arr){};
* value 指当前循环的值;
* index 指当前循环的索引;
* arr 指当前数组本身;
第二个参数控制当前 this 指向谁;
var arr = [1, 2, 3];
arr.forEach(function(value, index, arr){
console.log(value, index, arr);
//1 0 [1, 2, 3]
//2 1 [1, 2, 3]
//3 2 [1, 2, 3]
}, document);
- indexOf():跟字符串查找一样,查找指定元素是否存在;如果存在,返回下标,如果不存在返回-1
var arr = [1, 2, 3, 4];
console.log(arr.indexOf(2)); //1
还可以传第二个参数,表示从某个下标位置开始向后检测元素在数组中是否存在;如果存在返回下标,不存在返回-1
- lastIndexOf():跟 indexOf() 一样,只不过它是从后往前查找;如果存在返回下标,不存在返回-1
var arr = [1, 2, 3, 4];
console.log(arr.lastIndexOf(2)); //1
也可以传第二个参数,表示从某个下标位置开始向前检测元素在数组中是否存在;如果存在返回下标,不存在返回-1
- some():判断数组内是否有指定元素,如果只要有一个则返回true,如果一个都没有则返回false
var arr = [1, 2, 3];
var result = arr.some(function(value, index, arr){
return value == 2;
});
console.log(result); //true
- every() :判断数组内是否都有指定元素,如果全部都有则返回true,
如果有一个没有指定元素则返回false
var arr = [1, 2, 3];
var result = arr.every(function(value, index, arr){
return value == 2;
});
console.log(result); //false
-
filter():过滤不符合条件的元素,如果回调函数返回true则保留,返回false则过滤掉
-
map():映射,返回一个被操作后的新数组,不会改变原数组;一般配合return使用,如果没有return就跟forEach一样
-
reduce():归并,回调函数接收4个参数,类似递归,可以求和之类的操作;
- 第一个参数为:之前计算过的值 prev
- 第二参数为:之前计算过的值的下一个值 next
- 第三个参数:当前索引 index
- 第四个参数为:当前数组对象 arr