JS中数组的方法
- JS中数组的方法
- 写在前面
- 使用方法
- 1. arr.sort(); 给数组排序,先数字后英文再中文;
- 2. arr.reverse(); 反转数组元素;
- 3. arr.join(str); 将数组划分为字符串,数组元素以str分隔(默认是逗号);
- 4. arr.concat(arr1,arr2,...,arr3); 合并数组,可以是多个,多个之间用逗号隔开“,”;
- 5. arr.pop(); 尾删;
- 6. arr.push(data); 尾增;
- 7. arr.shift() 前删;
- 8. arr.unshift(data); 前增;
- 9. arr.slice(start,end);分割数组,返回arr中start到end之间的元素(最右边的不包括);
- 10.arr.splice(start,num); 删除指定位置,并替换,返回删除的数据
- 11.arr.toString(); 直接转为字符串,并返回
- 12. arr.valueOf(); 返回数组对象的原始值 ,(一般情况下其实就是数组自身)
- 13. arr.indexOf(data,start); 找出元素的下标(索引位置从0开始,如果在数组中没找到指定元素则返回 -1);
- 14.arr.lastIndexOf(data,start); 反向查询并返回数据的索引
- 15. arr.forEach(function(currentValue, index, arr)); 用于调用数组的每个元素,并将元素传递给回调函数,没有任何返回值;
- 16. arr.map(function(currentValue,index,arr)) 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值;
- 17. arr.filter(function(currentValue,index,arr)) 将函数执行一遍,只有在布尔值为true的时候才会返回该数据;
- 18. arr.some(function),对数组中的每一项进行判断,若都不符合则返回false,否则返回true;
- 19.arr.every(function) 对数组中的每一项进行判断,若都符合则返回true,否则返回false
- 20.arr.reduce(function); reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
- 21.arr.reduceRight(); 反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回
JS中数组的方法
写在前面
序号 | 方法 | 功能 | 是否改变原数组 |
---|---|---|---|
1 | arr.sort() | 给数组排序,先数字后英文再中文 | Y |
2 | arr.reverse() | 反转数组元素 | Y |
3 | arr.join(str) | 将数组划分为字符串,数组元素以str分隔(默认是逗号) | N |
4 | arr.concat(arr1,arr2,…,arr3) | 合并数组,可以是多个,多个之间用逗号隔开“,” | N |
5 | arr.pop() | 删除arr数组最后一个元素,返回弹出的元素值(尾删) | Y |
6 | arr.push(data) | 给arr数组最后添加一个data元素,返回新数组的长度(尾增) | Y |
7 | arr.shift() | 删除arr数组第一个元素,并反弹出的元素值(前删) | Y |
8 | arr.unshift(data) | 给arr数组最前面添加一个data元素,返回新数组的长度(前增) | Y |
9 | arr.slice(start,end) | 截取数组,返回arr中start到end之间的元素(不包括最右边的) | N |
10 | arr.splice() | 删除指定位置,并替换,返回删除的数据 | Y |
11 | arr.toString() | 直接转为字符串,并返回 | N |
12 | arr.valueOf() | 返回数组对象的原始值 | N |
13 | arr.indexOf(item,start) | 找出元素的下标(索引位置从0开始,如果在数组中没找到指定元素则返回 -1) | N |
14 | arr.lastIndexOf() | 反向查询并返回数据的索引 | N |
15 | arr.forEach(function(currentValue, index, arr)) | 用于调用数组的每个元素,并将元素传递给回调函数,没有任何返回值 | N,会遍历数组 |
16 | arr.map(function(currentValue,index,arr)) | 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值(遍历并修改数组中的数据,注意返回值) | N,会遍历数组 |
17 | arr.filter(function(currentValue,index,arr)) | 将函数执行一遍,只有在布尔值为true的时候才会返回该数据(遍历并过滤数组中的数据,注意返回值) | N,会遍历数组 |
18 | arr.some(function) | 对数组中的每一项进行判断,只要一个为true,那就是true | N,会遍历数组 |
19 | arr.every(function) | 对数组中的每一项进行判断,只要必须所有为true,才是true | N,会遍历数组 |
20 | arr.reduce(function) | reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值 | N,会遍历数组 |
21 | arr.reduceRight() | 反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回 | N,会遍历数组 |
arr也可写成array
创建数组的方法 :
- 使用new关键字来创建一个数组(构造函数)
var arr = new Array(1,2,3,4,5,6,7,8);
console.log(arr);
注:
1、new 和 Array关键字,
Array 首字母大写
;
2、数组元素可以写多个,多个之间用逗号隔开“,”
;
3、var arr = new Array[ ]; 错误的写法。
- 使用中括号[ ]来创建数组(字面量)
var arr = [1,2,3,4,5,6,7,8];
console.log(arr);
注意:
1.当接收一个数值类型数据的时候,字面量就是一个数据,构造函数是一个长度
2.任何两个对象(数值也属于对象)都不相等,哪怕长得一样
var arr = [5]; //字面量
var arr2 = new Array(5); //构造函数
console.log(arr) //Array(1)
console.log(arr2) //Array(5)
console.log(arr.length) //1
console.log(arr2.length) //5
// 当接收一个数值类型数据的时候,字面量就是一个数据,构造函数是一个长度
var arr = [];
var arr2 = [];
console.log(arr == arr2); //false
// 任何两个对象都不相等,哪怕长得一样
使用方法
1. arr.sort(); 给数组排序,先数字后英文再中文;
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.sort());
sort的数值比较是逐位比较的,所以对于不同位数比较会出错
var arr = [45,23,67,12,89,3];
console.log(arr.sort()); //[12, 23, 3, 45, 67, 89]
此时有另一种方法可以用sort实现完美的排序
var arr = [45,23,199,67,101,12,89,3,1000];
arr.sort(function(a,b){
return b-a;
});
console.log(arr); //[1000, 199, 101, 89, 67, 45, 23, 12, 3]
//或者
var arr2 = [45,23,199,67,101,12,89,3,1000];
arr2.sort(function(a,b){
return a-b;
});
console.log(arr2) //[3, 12, 23, 45, 67, 89, 101, 199, 1000]
2. arr.reverse(); 反转数组元素;
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.reverse());
3. arr.join(str); 将数组划分为字符串,数组元素以str分隔(默认是逗号);
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.join('-')); //4-3-5-2-6-hello-你好
4. arr.concat(arr1,arr2,…,arr3); 合并数组,可以是多个,多个之间用逗号隔开“,”;
var arr = [4,3,5,2,6,'hello','你好'];
var arr1 = ['合并','一句话'];
var arr2 = ['world',];
console.log(arr.concat(arr1,arr2));
5. arr.pop(); 尾删;
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.pop()); //你好
console.log(arr) //[4, 3, 5, 2, 6, "hello"]
6. arr.push(data); 尾增;
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.push('新加的元素')); //8
console.log(arr) //[4, 3, 5, 2, 6, "hello", "你好", "新加的元素"]
console.log(arr.length); //
用length获取数组的长度
7. arr.shift() 前删;
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.shift()); //4
console.log(arr) //[3, 5, 2, 6, "hello", "你好"]
8. arr.unshift(data); 前增;
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.unshift('新加的元素')); //8
console.log(arr) //["新加的元素", 4, 3, 5, 2, 6, "hello", "你好"]
9. arr.slice(start,end);分割数组,返回arr中start到end之间的元素(最右边的不包括);
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.slice(1,3)); //最右边的不包括[3, 5]
console.log(arr) //[4, 3, 5, 2, 6, "hello", "你好"]
10.arr.splice(start,num); 删除指定位置,并替换,返回删除的数据
当没有传参时,显示的是原数组;当传入start时表示从索引为start的数据开始删除,直到数组结束
var arr = [2,4,6,8,12,9];
console.log(arr.splice()); //[]
console.log(arr); //[2, 4, 6, 8, 12, 9]
console.log(arr.splice(2)) //[6, 8, 12, 9]
console.log(arr) //[2, 4]
当传入start和num时表示从索引为start的数据开始删除,删除num个
var arr2 = [2,4,6,8,12,9];
console.log(arr2.splice(2,3)) //[6, 8, 12]
console.log(arr2) //[2, 4, 9]
当传入更多时表示从索引为start的数据开始删除,删除num个,并将第三个参数及后面所有参数,插入到start的位置
var arr3 = [2,4,6,8,12,9];
console.log(arr3.splice(2,0,"99","98","97")); //[]
console.log(arr3) //[2, 4, "99", "98", "97", 6, 8, 12, 9]
// console.log(arr3.splice(2,1,"zs","ls")); //[6]
// console.log(arr3) //[2, 4, "zs", "ls", 8, 12, 9]
11.arr.toString(); 直接转为字符串,并返回
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.toString()); //4,3,5,2,6,hello,你好
console.log(arr); //[4, 3, 5, 2, 6, "hello", "你好"]
12. arr.valueOf(); 返回数组对象的原始值 ,(一般情况下其实就是数组自身)
var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.valueOf()); //[4, 3, 5, 2, 6, "hello", "你好"]
console.log(arr); //[4, 3, 5, 2, 6, "hello", "你好"]
console.log(arr.valueOf() == arr); //true
13. arr.indexOf(data,start); 找出元素的下标(索引位置从0开始,如果在数组中没找到指定元素则返回 -1);
start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数
var arr = ["a","b","c","d","e"];
console.log(arr.indexOf("b")); //1
console.log(arr.indexOf("e")); //4
console.log(arr.indexOf("e",-1)); //4
console.log(arr.indexOf("e",2)); //4
console.log(arr.indexOf("e",4)); //4
console.log(arr.indexOf("9")); //-1
14.arr.lastIndexOf(data,start); 反向查询并返回数据的索引
从右向左,查询在数组中出现的位置,start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1
var arr = ["a","b","c","d","e"];
console.log(arr.lastIndexOf("b")); //1
console.log(arr.lastIndexOf("e")); //4
console.log(arr.lastIndexOf("e",-1)); //4
console.log(arr.lastIndexOf("e",2)); //-1
console.log(arr.lastIndexOf("e",4)); //4
console.log(arr.lastIndexOf("9")); //-1
15. arr.forEach(function(currentValue, index, arr)); 用于调用数组的每个元素,并将元素传递给回调函数,没有任何返回值;
var arr = ["a","b",255,512,"hello"];
var a = arr.forEach(function(value,index){
console.log(value);
console.log(index);
})
释:
currentValue
:必选。当前元素
index
:可选。当前元素的索引值
arr
:可选。当前元素所属的数组对象
16. arr.map(function(currentValue,index,arr)) 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值;
var arr = [4,5,6,7,8,"hello"];
var b = arr.map(function(value,index){
console.log(value);
console.log(index);
})
注:
map()不会对空数组进行检测,map() 不会改变原始数组
17. arr.filter(function(currentValue,index,arr)) 将函数执行一遍,只有在布尔值为true的时候才会返回该数据;
var arr = [4,5,6,7,8,"hello"];
var c = arr.filter(function(value,index){
console.log(value);
console.log(index);
})
注:
filter() 不会对空数组进行检测, 不会改变原始数组
18. arr.some(function),对数组中的每一项进行判断,若都不符合则返回false,否则返回true;
19.arr.every(function) 对数组中的每一项进行判断,若都符合则返回true,否则返回false
20.arr.reduce(function); reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
21.arr.reduceRight(); 反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回
1
…