1. 概述:
数组是一种数据类型(把很多数据装入一个盒子中,用的时候取出来)字面量为[1,2,3]2. 定义:
//字面量定义法var arr1 = [1,2,3];//对象定义法var arr2 = new Array(1,2,3);//定义数组长度var arr3 = new Array(10);3. 相关操作> 获取数组长度arr1.length> 数组中的元素赋值arr3[0] = "abc";> 如果索引值超出了数组的长度,返回值是undefined> 数组的最大索引值 = 数组的长度 - 1> 索引值从0开始4. 数组的遍历var arr = new Array(1,2,3,4,5,6);for(var i=0; i<arr.length; i++) { console.log(arr[i]);}5. Array的内置方法① 判断数组和转换数组instanceof 是一个关键字。 判断A是否是B类型。布尔类型值 = A instanceof B ;isArray() HTML5中新增,判断是不是数组调用者:Array 参数:变量(被检测值) 返回值:布尔类型布尔类型值 = Array.isArray(变量) ;toString() 把数组转换成字符串,每一项用逗号分割字符串 = 数组.toString();valueOf() 返回数组对象本身数组本身 = 数组.valueOf();join( ) 将数组元素连接起来以构建一个字符串(数组转为字符串)var arr = [1,2,3];//join会根据参数连接数组中的元素,默认用逗号连接console.log(arr.join());//1,2,3console.log(typeof arr.join());//Stringconsole.log(arr.join(" "));//1 2 3console.log(arr.join("-"));//1-2-3console.log(arr.join("|"));//1|2|3//无缝连接,参数用空字符串“”console.log(arr.join(""));//123② 数组增删和换位置(原数组将被修改)栈操作(先入后出)- push( ) 在数组最后的位置添加元素(压栈),返回数组的长度数组1改后的长度 = 数组1.push(元素1);- pop( ) 删除并返回数组的最后一个元素(弹栈)被删除的元素 = 数组1.pop();队列操作(先入先出)- unshift( ) 在数组头部插入一个元素 ,返回数组的长度数组1改后的长度 = 数组1.unshift(元素1);- shift( ) 删除并返回数组中的第一个元素被删除的元素 = 数组1.shift();reverse( ) 翻转数组(原数组将被反转,返回值也是被反转后的数组)反转后的数组 = 数组1.reverse();sort( ) 给数组排序,返回排序后的数组。如何排序看参数。底层是按照每个元素的首字符的Unicode编码值来排序的。如果是对象,可以通过某个属性的比较排列顺序。首个字符的Unicode编码值,从小到大排序。首字母相同,排第二个,以此类推。从小到大排序后的数组 = 数组1.sort(function(a,b){ return a-b;});无参:按照数组元素的首字符对应的Unicode编码值从小到大排列数组元素。带参:必须为函数(回调函数--callback)。函数中带有两个参数,代表数组中的前后元素。如果计算后(a-b),返回值为负数,a排b前面;返回值等于0不动;返回值为正数,a排b后面。③ 了解方法concat( ) 连接数组新数组 = 数组1.concat(数组2);slice( ) 从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始- 如果只有一个参数,截取到最后- 如果只有两个参数,截取到后一个参数之前一个,包左不包右- 如果是负数,从后面截取- 如果两个参数相等或前大后小,无意义,返回空字符串新数组 = 数组1.slice(索引1,索引2);splice( ) 删除或替换当前数组的某些项目,参数start,deleteCount,options(要替换的项目) 。第一个参数是指定索引值,第二个参数是删除的个数,第三个之后的参数是替换的内容。返回被删除的元素。新数组 = 数组1.splice(起始索引,删除个数,替换内容);indexOf( )、lastIndexOf( ) 获取某个元素在数组中的索引值如果有,返回该位置的索引值;如果没有,返回-1;数组的索引值永远不会变,两种方法查同一个元素的索引值是相同的。索引值 = 数组.indexOf(数组中的元素); //从前往后查索引值 = 数组.lastIndexOf(数组中的元素); //从后往前查④ 扩展的方法(ES5 中给数组扩充了一些方法)遍历型方法:都会遍历数组中的每一个元素,并且提供一个回调函数来处理每一个数组元素,不会修改原数组every()、filter()、forEach()、map()、some()数组/boolean/无 = 数组.every/filter/forEach/map/some( function( v, i ){ // 该函数会调用 数组.length 次 // 数组中每一个元素都会被这个函数处理一次 // 此函数带有两个参数 // v 表示数组元素 // i 表示数组元素的索引(下标) // 函数处理元素的办法可以由用户决定});every (所有):对数组中每一项运行回调函数,回调函数用于判断数组中的每个元素是否都满足条件,如果都满足就返回true,如果有一个不满足就返回false并停止遍历;不写默认返回false。array.every(function(item,index,arr) {});filter(过滤):对数组中每一项运行回调函数,该函数返回由结果是true的项组成的新数组,相当于一个过滤器。var arr = array.filter(function(item,index,arr) {});console.log(arr); forEach:遍历数组。array.forEach(function(item,index,arr){});map(映射):对数组中每一项运行回调函数,返回该函数的结果组成的新数组。就是将一个数组,变成另一个数组,变化的规则由回调函数决定,将变化好的数据返回即可。var arr = array.map(function(item,index,arr) { return "/"" + item + "/"";})some(有的):对数组中每一项运行回调函数,回调函数用于判断每一个元素是否符合某些要求,如果数组中有一个符合了,则 some 返回 true 并停止遍历。var b = array.some(function(item,index,arr) { if (item == "ww") { return true; } return false;});⑤ 清空数组var array = [1,2,3,4,5,6];array.splice(0,array.length); //删除数组中所有项目(法1)array.length = 0; //length属性可以赋值,其它语言中length是只读(法2)array = []; //直接赋为空数组,推荐(法2)
新闻热点
疑难解答