JavaScript之数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript之数组相关的知识,希望对你有一定的参考价值。

  数组是用来在单独的变量名中存储数据的,你可以通过方法来操作数组,如:增加数据、删除数据等。

创建/访问数组

  通过指定数组名以及索引号码(数组的索引从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),对应的基数不合法。

 

 

本文仅供自己在平时工作学习时作笔记使用!如有错误请多多指出!!!

以上是关于JavaScript之数组的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript单行代码,也就是代码片段

JavaScript 片段

JavaScript 代码片段

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

48个值得掌握的JavaScript代码片段(上)