JavaScript-数组基础
数组:字面意思上是一组数据,一组(一般情况下相同类型的)的数据(不一定都是数字)。
【注】数组是一种数据类型
【注】数组的作用是:使用单独的变量来存储一系列的值。
1 var arr=new Array(); 2 arr[0]="Bool"; 3 arr[1]="Str"; 4 arr[2]="Cent";
简洁方式:
1 var arr=new Array("Bool","Str","Cent");
字面量方式:
1 var arr=["Bool","Str","Cent"];
在对象中属性名填入任何内容都会隐式转换为字符
在数组中所有的下标都会转换为number
如果不能转换为number的(也就是转换后是NaN的),就会默认添加对象的属性名
数组的长度,仅记录下标的个数,不包含属性数量
数组不可以使用点语法获取下标变量,但是可以使用点语法取属性
数组属性及方法:
1、数组的长度 arr.length访问 数组的个数
【注】length属性,不是只读的,可以设置的。
1 var arr = ["red", "blue", "pink"]; 2 arr.length = 2; 3 console.log(arr);
2、数组的遍历
数组元素的访问和赋值,都是通过数组的下标完成
【注】下标就是索引,即元素的序号,从0开始,下标最大取值是:数组的长度(length)-1。
【注】下标可以是变量或者表达式。
1 var arr = [10,20,30,40,50]; 2 console.log(arr[1+2]);
3、for循环
以下为通过循环给数组的每个元素赋值,赋成下标的平方。
1 var arr = []; 2 for(var i = 0; i < 10; i++){ 3 arr[i] = i * i; 4 } 5 alert(arr); 6 //0,1,4,9,16,25,36,49,64,81
4、for in 遍历
快速遍历 将数组中每一个元素从头到尾进行遍历
【注】forin效率要比for循环的效率高。
1 var arr = ["red", "blue", "pink"]; 2 for(var i in arr){ 3 document.write(arr[i] + "<br />"); 4 } 5 alert(arr); 6 //red blue pink
5、push 在数组尾部添加一个或者多个元素,并且返回数组的新长度
1 var arr=[1,2,3,4,5]; 2 arr.push(6);//在数组的尾部插入一个新元素 3 arr.push(6,7,8);//在数组的尾部插入多个新元素 4 var a=arr.push(6,7,8);//通过添加到尾部元素后返回数组的新长度 5 console.log(arr);
6、pop 删除数组尾部的最后一个元素,并且将这个被删除的元素返回
1 var arr=[1,2,3,4,5]; 2 arr.pop();//pop中没有参数,删除数组的最尾部一个元素 3 var a=arr.pop();//pop删除数组的最尾部一个元素,并且将被删除的元素返回 4 console.log(arr,a); 5 6 arr.length--; //等同 速度更快,但是不会返回被删除的元素 7 arr.pop();//速度慢,但是会返回被删除的元素 8 console.log(arr);
7、unshift 在数组头部添加一个或者多个元素,并且返回数组的新长度
1 var arr=[1,2,3,4,5]; 2 arr.unshift(0);//在数组的头部插入一个新元素 3 arr.unshift(-3,-2,-1,0);//在数组的头部插入多个新元素 4 var a=arr.unshift(-3,-2,-1,0);//返回数组的新长度 5 console.log(arr);
1 var arr=[1,2,3,4,5]; 2 arr.shift();//将数组的第一个元素删除 3 var a=arr.shift();//将数组的第一个元素删除,并且返回这个被删除的元素 4 console.log(arr);
不管删除还是添加都会改变数组的长度.
9、concat 数组的合并,合并后会返回一个新数组,原来的两个数组不会变化
1 var arr=[1,2,3,4]; 2 var arr1=[5,6,7,8]; 3 var arr2=arr.concat(arr1); 4 // 数组除了可以合并数组,也可以合并元素,将多个元素与原数组合并,返回新数组 5 var arr3=arr.concat(0,-1,-2); 6 // concat既可以合并元素,也可以合并数组 7 var arr4=arr.concat(0,arr1,["A","B"]); 8 // 如果直接使用concat,就可以完成数组的复制功能 9 var arr5=arr.concat(); 10 console.log(arr5);
10、join 就是将数组的每个元素以指定的字符连接形成新字符串返回
var arr=[1,2,3,4,5]; // 将数组合并为字符串返回,默认使用,连接 var str=arr.join(); // 在这里join的参数是字符串的连接符 var str=arr.join("|"); // ""作为连接符,会将数组元素首尾相连成为字符串 var str=arr.join(""); console.log(str);
1 //toString直接将数组转换为字符串 2 var arr=[1,2,3,4,5]; 3 var str=arr.toString(); 4 console.log(str);
11、splice
这个方法可以从指定的位置删除给定数量的元素,并且在这个位置插入需要的元素,并且返回被删除的元素组成的新数组
1 //插入,删除,替换 2 var arr=[1,2,3,4,5]; 3 没有任何参数时,返回一个空数组 4 var arr1=arr.splice(); 5 // 第一个参数是0,表示从第0位开始,第二个参数删除多少个没有填,意味着删除到尾部 6 var arr1=arr.splice(0);//将所有数据转移到新数组 7 // 从第0位开始删除3个元素,返回到新数组arr1 8 var arr1=arr.splice(0,3); 9 // 从第几位开始可以是负数,从后向前数(倒数),因为没有给要删除的数量,因此删除到尾部 10 var arr1=arr.splice(-2); 11 // 从数组的第0位开始,删除1个元素,并且在这个位置插入一个元素 -1,替换 12 var arr1=arr.splice(0,1,-1); 13 // 数组的最后一位替换位0 14 var arr1=arr.splice(-1,1,0); 15 // 将数组中第二位开始两位元素替换为10,11 16 var arr1=arr.splice(2,2,10,11); 17 // 在数组的第二位插入一个元素 -1 18 arr.splice(2,0,-1); 19 arr.splice(2,0,-1,-2,-3,-4); 20 console.log(arr);
12、slice 按指定位置截取复制数组的内容
1 var arr=[1,2,3,4,,5,6,7]; 2 // 从第1位开始截取到第4位之前 3 // 只能从前向后截取 4 arr.slice(从什么位置开始,到什么位置之前结束) 5 // 第二个参数不写,默认截取到尾部 6 var arr1=arr.slice(1,4); 7 console.log(arr1,arr); 8 9 var arr1=arr.slice();//复制数组arr 10 var arr1=arr.slice(0); //复制数组 11 var arr1=arr.slice(3);//从第三位截取到尾部复制 12 var arr1=arr.slice(-2);//从倒数第二位开始截取到尾部 13 var arr1=arr.slice(-3,-1);//从倒数第三位到倒数第一位 14 console.log(arr1);
13、indexOf
1 var arr=[1,2,3,4,5,6]; 2 for(var i=0;i<arr.length;i++){ 3 if(arr[i]===4){ 4 console.log("aaa"); 5 } 6 } 7 // 在数组中查找元素4,如果查找到,返回该元素所在的下标,如果没有查找到,则返回-1 8 var index=arr.indexOf(4); 9 console.log(index);
14、lastIndexOf 从后向前查找
1 var arr=[1,3,1,2,3,5,2,3,4,6]; 2 var index=arr.lastIndexOf(3); 3 console.log(index);
//去重 var arr=[1,3,1,2,3,5,2,3,4,6]; var arr1=[]; for(var i=0;i<arr.length;i++){ if(arr1.indexOf(arr[i])===-1){ arr1.push(arr[i]); } } console.log(arr1);
15、forEach
1 var arr=[1,2,3,5,6,7,8,9]; 2 arr.forEach(function(a,b,c){ 3 console.log(a,b,c); 4 });
16、map 会返回一个与原数组长度相等的新数组
1 var arr=[3,5,7,9,1,2,4]; 2 var arr2=arr.map(function(item,index,arr){ 3 console.log(item,index,arr); 4 // 在map中使用return 就是在对应的下标中添加对应的数据 5 return "a"; 6 return item+10; 7 }); 8 console.log(arr2);
17、sort
1 var arr=[0,1,4,2,7,2,5,8,10,4,5,7,3,8,9]; 2 arr.sort(function(a,b){ 3 // console.log(a,b); 4 //return a-b 从小到大 5 //return b-a 从大到小 6 // 仅适用于数值 7 return a-b; 8 }) 9 console.log(arr);
18、some
1 var arr=[1,4,6,2,7,9,0]; 2 var bool=arr.some(function(item,index,arr){ 3 return item>5; 4 }); 5 console.log(bool);
1 //桥接模式 2 function somes(arr,fn){ 3 // fn就是回调函数 4 for(var i=0;i<arr.length;i++){ 5 var bool=fn(arr[i],i,arr); 6 if(bool) return true; 7 } 8 return false; 9 } 10 var b=somes(arr,abc); 11 function abc(item,index,arr){ 12 return item>5; 13 } 14 console.log(b);
19、every
判断数组中是否每一个都满足条件,如果有一个不满足条件,直接跳出,否则的话所有都满足时返回为ture
1 var arr=[1,4,6,2,7,9,0]; 2 var bool=arr.every(function(item,index,arr){ 3 return item>2; 4 }); 5 console.log(bool);
20、filter 过滤
1 var arr=[1,3,4,7,3,5,8,9]; 2 var arr1=arr.filter(function(item,index,arr){ 3 return item>5; 4 }); 5 console.log(arr1);
21、reduce 归并
1 var arr=[10,3,4,7,3,5,8,9]; 2 // 从数组的第1位开始遍历,第0位没有遍历,下标从1开始 3 // 刚开始value是数组的第0项,后面每次value都是undefined 4 // 如果在函数中使用return 就会将返回值在下次数组的遍历中赋予value 5 arr.reduce(function(value,item,index,arr){ 6 // 循环的次数是数组的个数-1 7 // value就是上次遍历return的值,第0次遍历时(最开始时是数组的第0项) 8 console.log(value); 9 return value+1 10 }) 11 12 // 累积相加数组元素求和 13 // reduce返回的是一个值,就是遍历到最后一次return出来的值 14 var sum=arr.reduce(function(value,item){ 15 return value+item; 16 }); 17 console.log(sum);
原文地址:https://www.cnblogs.com/wyp-King/p/12772095.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 结构型设计模式:适配器模式和门面模式
- 结构型设计模式:代理模式
- kubernete中的原子调度单位:pod
- mybatis-generator在命令行及IEAD中的使用
- mybatis-generator在命令行及IDEA中的使用
- 70-STM32+ESP8266+AIR202基本控制篇-移植使用-移植单片机MQTT底层包到自己的工程项目
- springboot研究:springboot自带监控actuator
- springboot研究:springboot使用swagger自动构建api
- numpy/pandas瞎搞系列(一):OLS,WLS的numpy实现
- redis实战第三篇 redis sentinel安装和部署
- 后浪,谈谈你对jvm性能调优的理解
- Homer预测共表达基因的motif
- redis实战第一篇 安装和使用
- lombok在java项目中的使用
- MySQL 的全文索引.