数组是用来在单独的变量名中存储数据的,你可以通过方法来操作数组,如:增加数据、删除数据等。
创建/访问数组
通过指定数组名以及索引号码(数组的索引从0开始),你可以访问某个特定的元素,如arr[2]、arr[3]。
1 // 创建数组的方法有两种:1、通过new关键字创建 2、通过字面量创建 2 var arr = new Array(); // 创建一个空数组 3 arr[0] = "Hello"; // 向arr数组中添加元素 4 arr[1] = "world"; // 向arr数组中添加元素 5 6 var arr1 = new Array(3); // 创建一个数组长度的3的数组 7 arr[0] = "My"; // 向arr1数组中添加元素 8 arr[1] = "name"; // 向arr1数组中添加元素 9 arr[3] = "Lily"; // 向arr1数组中添加元素 10 11 var arr2 = new Array(1,2,3,4,5); // 创建数组[1,2,3,4,5] 12 13 var arr3 = []; // 创建一个空数组 14 var arr4 = [1,2,3]; // 创建数组[1,2,3] 15 16 console.log(arr[1]); // 返回world 17 console.log(arr4[2]); // 返回3
数组的属性
1、length - 返回数组的长度,即数组元素的个数
2、prototype - 返回对象类型原型的引用
3、constructor - 返回创建数组的构造函数
1 // 数组的length属性 2 var arr = [1,2,3,4,5]; 3 console.log(arr.length); // 返回5
数组的方法
push() - 在数组末尾添加一个或多个元素,并返回新数组的长度(要改变原来的数组)
pop() - 删除数组末尾的一个元素,并返回该元素(要改变原来的数组)
unshift() - 在数组开头添加一个或多个元素,并返回新数组长度(要改变原来的数组)
shift() - 删除数组开头的一个元素,并返回该元素(要改变原来的数组)
slice() - 截取数组的一个片段,并以数组的形式返回该片段(不改变原数组)
splice() - 在指定位置增加或删除数组元素,只增加元素返回空数组,删除元素则以数组形式返回被删除的元素(要改变原数组)
concat() - 将一个或多个数组连接,并返回连接后新的数组(不改变原数组)
reverse() - 反转数组中的元素(要改变原来的数组)
sort() - 对数组元素排序,会改变原来的数组(默认是升序)
join(separator) - 将数组元素转为以separator隔开的字符串(默认用逗号分隔)
indexOf() - 返回元素的索引,类似字符串的indexOf()方法
1 // 增加元素 push、unshift、splice (改变原数组)
2 var arr = [1,2,3];
3 arr.push(4,5); // 返回5,arr = [1,2,3,4,5]
4 arr.unshift(-1,0); // 返回7,arr = [-1,0,1,2,3,4,5]
5 // splice(index,count,arrData) index--增加元素的位置(索引);count--从index位置开始删除元素的个数;arrData--从index位置开始增加的元素
6 arr.splice(1,0,6); // 返回[],arr = [-1,6,0,1,2,3,4,5]
7
8 // 删除元素 pop、shift、splice
9 var arr = [1,2,3,4,5,6,7];
10 arr.pop(); // 返回7,arr = [1,2,3,4,5,6]
11 arr.shift(); // 返回1,arr = [2,3,4,5,6]
12 // splice(index,count) index--删除元素的位置(索引);count--从index位置开始删除元素的个数
13 arr.splice(2,2); // 返回[4,5],arr = [2,3,6]
14
15 // 截取数组 slice (不改变原数组,以数组形式返回截取的部分)
16 // slice(start,[end]) - 截取数组从start开始(含),到end结束(不含);若end省略,则从start开始截取,到数组末尾
17 var arr = [1,2,3,4,5];
18 arr.slice(1,3); // 返回[2,3],arr = [1,2,3,4,5]
19 arr.slice(3); // 返回[4,5],arr = [1,2,3,4,5]
20
21 // 连接数组 contact(不改变原数组)
22 var arr = [1,2];
23 var arr1 = [3,4,5];
24 arr.concat(arr1); // 返回[1,2,3,4,5],arr = [1,2]
25 arr.concat("a","b"); // 返回[1,2,"a","b"],arr = [1,2]
26
27 // 反转数组 reverse (改变原数组)
28 var arr = [1,2,3];
29 arr.reverse(); // 返回[3,2,1],arr = [3,2,1]
30
31 // 数组排序 sort (改变原数组)
32 // sort不带参数,按升序排列;sort带参数,参数是一个函数
33 var arr = [3,2,6,5,9,1];
34 arr.sort(); // 返回[1,2,3,5,6,9],arr = [1,2,3,5,6,9]
35 var arr = [9,5,6,8,2];
36 arr.sort(function(a,b){
37 return b-a; // 按降序排列
38 // return a-b; // 按升序排列
39 }); // 返回[9,8,6,5,2],arr = [9,8,6,5,2]
40
41 // 数组转字符串 join 默认以逗号分隔(不改变原数组)
42 var arr = [1,2,3,4];
43 arr.join(); // 返回"1,2,3,4"
44 arr.join(","); // 返回"1,2,3,4"
45 arr.join("-"); // 返回"1-2-3-4"
遍历数组
map() - 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值(不改变原数组)
filter() - 返回一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素(不改变原数组)
some() - 返回true或false,对数组中的每个元素进行检查,直到返回true为止,若检查完整个数组都为false,则返回false;它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略
every() - 返回true或false,对数组中的每个元素进行检查,直到返回false为止,若检查完整个数组都为true,则返回true;它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略
forEach() - 遍历数组中的每一项
for循环遍历数组(不介绍)
1 // map() => array.map(function(value,index,[array]){},[thisValue])
2 // value -- 当前数组元素,index -- 当前数组元素的索引,array -- 调用map方法的数组,thiiValue -- 执行回调函数时定义的this对象(上下文对象)
3 // 返回每个项的平方
4 var arr = [1,2,3];
5 arr.map(function(val,index){
6 return val * val;
7 }); // 返回[1,4,9],arr = [1,2,3]
8
9 // filter() => array.filter(function(value,index,[array]){},[thisValue])
10 // value -- 当前数组元素,index -- 当前数组元素的索引,array -- 调用filter方法的数组,thiiValue -- 执行回调函数时定义的this对象(上下文对象)
11 // 过滤掉奇数
12 var arr = [1,2,3,4,5,6];
13 arr.filter(function(val,index){
14 return val % 2 === 0;
15 }); // 返回[2,4,6],arr = [1,2,3,4,5,6]
16
17 // some() => array.some(function(value,index,[array]){},[thisValue])
18 // value -- 当前数组元素,index -- 当前数组元素的索引,array -- 调用some方法的数组,thiiValue -- 执行回调函数时定义的this对象(上下文对象)
19 // 检查是否有元素大于5,有则返回true,无则返回false
20 var arr = [2,3,4,6];
21 arr.some(function(val,index){
22 retrun val > 5;
23 }); // 返回true
24
25 // every() => array.every(function(value,index,[array]){},[thisValue])
26 // value -- 当前数组元素,index -- 当前数组元素的索引,array -- 调用every方法的数组,thiiValue -- 执行回调函数时定义的this对象(上下文对象)
27 // 检查是否有元素大于5,有则返回false,无则返回true
28 var arr = [1,2,3,6];
29 arr.some(function(val,index){
30 retrun val > 5;
31 }); // 返回false
32
33 // forEach() => array.forEach(function(value,index,[array]){},[thisValue])
34 // value -- 当前数组元素,index -- 当前数组元素的索引,array -- 调用forEach方法的数组,thiiValue -- 执行回调函数时定义的this对象(上下文对象)
35 // 返回数组中的每一项和索引
36 var arr = [7,9,5];
37 arr.forEach(function(val,index,arr){
38 console.log("index:" + index + ",value:" + val);
39 });
40 // 返回index:0,value:7
41 // index:1,value:9
42 // index:2,value:5
面试题:
1、[1,2,3].map(parseInt)返回值是什么?为什么?
解答:[1,NaN,NaN];由于parseInt需要俩个参数parseInt(string,[radix]),radix为解析时对应的基数(radix介于2~36之间,若radix省略或为0,则以十进制解析,当radix小于2或大于36,则返回NaN),而map传了3参数(value,index,array),对应的基数不合法。
本文仅供自己在平时工作学习时作笔记使用!如有错误请多多指出!!!
来源:https://www.cnblogs.com/iyunpeng/p/7602518.html