javaScript数组2什么是数组变量用来存储数据,可是一个变量只能存储一个内容。假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果需要存储更多数据,那就会变的更麻烦。数组可以解决这个问题,一个数组里可以存放多个数据。数组是一个值的集合,每个值都有一个索引号,我们称之为下标。下标从0开始,每个下标都对应一个值。。2/48569824712345012......5下标数组中的每一个值称为元素。一个数组中有几个元素,称之为长度。3创建数组语法:var数组名=newArray();//创建数组时不指定长度var数组名=newArray(长度值);//创建数组时指定长度创建一个名字叫num的数组。varnum=newArray();创建一个名字叫name的数组,长度是5。varname=newArray(5);注意:1.创建的新数组是空数组,没有值,如输出,则显示undefined。2.虽然创建数组时,指定了长度,但实际上数组都是可变长度的,也就是说即使指定了长度,仍然可以将元素存储在规定长度以外。3/484给数组赋值如何给数组里的每一个元素赋值呢?需要依靠下标来标示每一个元素。语法:数组名[下标]=值;varnum=newArray();num[0]=1;num[1]=2;......num[4]=5;如何取得数组中元素的值呢,仍然需要依靠下标。document.write(num[0]);document.write(num[1]);......document.write(num[4]);运行结果:12345注意:如果运行这段代码:document.write(num[5]);结果是什么?因为num[5]是第六个元素,并没有给它赋值,所以运行结果是:undefined4/485在创建数组的同时直接给数组赋值我们还可以在创建数组时直接给数组赋值。那么数组的长度就由值的数量来确定。第一种方法:varnum=newArray(66,80,90,77,59);//创建数组同时赋值第二种方法:varnum=[66,80,90,77,59];//直接输入一个数组注意:数组存储的数据可以是任何类型。比如:varstr=newArray(aaa,bbb,ccc);5/486使用循环遍历数组使用下标一个一个的从数组中取得每一个元素,这种做法非常麻烦。实际上,既然下标是一个从0开始的有序数列,那么完全可以将下标当做是一个循环变量,这样就可以使用循环来遍历数组了。varnum=newArray(66,80,90,77,59);for(vari=0;i5;i++){document.write(num[i]+br);}输出结果:66809077596/48这里的i从0到4,正好是数组的下标。7使用循环遍历数组上面的例子中,循环次数是固定的。当我们不知道数组的长度时,如何遍历呢?数组有一个属性:length,它的值就是数组的长度。语法:数组名.属性名varnum=newArray(66,80,90,77,59);document.write(num.length);输出结果:5这是遍历数组的标准写法:varnum=newArray(66,80,90,77,59);for(vari=0;inum.length;i++){document.write(num[i]+br);}注意:数组的length属性还可以赋值,而数组的长度会根据length的变化而变化。比如:num.length=0;//清空数组7/488练习1、声明一个字符串数组,存入:习近平、奥巴马、普京、小强。然后遍历这个数组。2、有一组数:85,62,99,23,551)在这组数中查找56是否存在。2)对这组数进行求和,并求平均值。3)找出最大值和最小值。4)不使用length属性,获取这组数的长度。5)将这组数倒序输出。6)对这组数进行排序(升序)。8/489数组中的常用方法数组是Object类型,所有数组具有属性和方法。9/48类别名称描述属性length设置或返回数组中元素的数目方法push()将新元素添加到一个数组的尾部,并返回数组的新长度值。unshift()将新元素添加到一个数组的头部,并返回数组的新长度值。pop()移除数组中的最后一个元素并返回该元素。shift()移除数组中的第一个元素并返回该元素。sort()对数组排序reverse()对数组进行反转(注意:不是倒序)concat()返回一个新数组,这个新数组是由多个数组组合而成的。join()把数组的所有元素放入一个字符串中,通过一个的分隔符进行分隔。split()将一个字符串分割成一个数组。splice()可以对数组元素做删除、插入等多种操作。slice()返回一个数组的片段。10数组中的常用方法-push、unshift、pop、shiftvarcity=newArray(沈阳,大连,鞍山);city.push(辽阳);document.write(city);运行结果:沈阳,大连,鞍山,辽阳varcity=newArray(沈阳,大连,鞍山);city.unshift(辽阳);document.write(city);运行结果:辽阳,沈阳,大连,鞍山varcity=newArray(沈阳,大连,鞍山);city.pop();document.write(city);运行结果:沈阳,大连varcity=newArray(沈阳,大连,鞍山);city.shift();document.write(city);运行结果:大连,鞍山10/4811数组中的常用方法-sortvarcity=newArray(html,css,javascript,jquery,ajax);city.sort();document.write(city);运行结果:ajax,css,html,javascript,jquery以上结果说明:sort方法是按照字母顺序进行排序。那么,这个规则应用到数字上时,就会出现不合理的现象。varcity=newArray(56,9,91,24,166);city.sort();document.write(city);运行结果:166,24,56,9,9111/4812数组中的常用方法-sort所以,当需要对数字进行排序时,需要为sort方法添加一个参数。而且这个参数是一个排序规则函数。varcity=newArray(56,9,91,24,166);city.sort(function(num1,num2){returnnum1-num2;});document.write(city);运行结果:9,24,56,91,16612/4813数组中的常用方法-reversereverse():对数组进行反转(注意:不是倒序)varcity=newArray(html,css,javascript,jquery,ajax);city.reverse();document.write(city);运行结果:ajax,jquery,javascript,css,html13/4814数组中的常用方法-concat、join、splitvararr1=[1,2,3,4,5];vararr2=[6,7,8,9,10];varnewArr=arr1.concat(arr2);document.write(newArr);运行结果:1,2,3,4,5,6,7,8,9,10varcity=newArray(沈阳,大连,鞍山);varstr=city.join(-);document.write(str);运行结果:沈阳-大连-鞍山varstr=“2015-10-8;vararr=str.split(-);document.write(arr[0]);运行结果:201514/4815数组中的常用方法-splice从数组中间删除元素:splice(开始位置,删除元素长度)vararr=[1,2,3,4,5,6,7,8,9];arr.splice(2,3);document.write(arr);运行结果:1,2,6,7,8,9在数组中间插入元素:splice(开始位置,删除元素长度,新插入元素……)vararr=[1,2,3,4,5,6,7,8,9];arr.splice(2,0,31,32,33);document.write(arr);运行结果:1,2,31,32,33,3,4,5,6,7,8,9替换数组中某个元素:splice(开始位置,要替换的元素长度,替换元素……)vararr=[1,2,3,4,5,6,7,8,9];arr.splice(2,1,33);document.write(arr);运行结果:1,2,33,4,5,6,7,8,915/4816数组中的常用方法-slice从数组中间截取一个片段:slice(开始索引,结束索引)vararr=[1,2,3,4,5,6,7,8,9];varnewArr=arr.slice(1,3);document.write(newArr);运行结果:2,3从数组中某个索引开始截取到最后:slice(开始索引)vararr=[1,2,3,4,5,6,7,8,9];varnewArr=arr.slice(3);document.write(newArr);运行结果:4,5,6,7,8,916/4817javaScript中的数组长度问题vararr=newArray(3);arr[0]=1;arr[1]=2;arr[2]=3;arr[3]=4;for(vari=0;iarr.length;i++){console.log(arr[i]);}上面代码中,虽然指定了数组长度为3。但是我们发现,当添加第四个元素时并没有出错,而且也能正确添加。实际上,javaScript中的数组长度是不固定的,当向数组中添加更多的元素时,数组的长度会自动增加。而且,数组中的元素可以使任何数据类型。从这个角度来说,javaScript中的数组更像是其他语言中的集合。17/4818JSON数据格式-1JSON是JavaScriptObjectNotation的缩写,是一种轻量级的数据交换形式,它基于ECMAScript的一个子集。它是一种XML的替代方案,而且比XML更小,更快而且更易于解析。因为JSON描述对象的时候使用的是JavaScript语法,它是语言和平台独立的.JSON数据的书写格式是:(键:值)varobj={name:张三,age:25,sex:男};alert(obj.name);结果:张三varobj={name:[“张三“、”李四“、”王五“],age:[25,26,24],sex:[“男”,“女,男]};alert(obj.name.length);结果:3alert(obj.name[1]);结果:李四18/4819JSON数据格式-2数组中使用JSON:varobj=[{name:张三,age:25,sex:男},{name:李四,age:26,sex:女},{name:王五,age:24,sex:男}];alert(obj[1].name);结果:李四19/4820JSON对象与数组JSON对象与数组:JSON对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。数组是有顺序的值的集合。一个数组开始于[,结束于],值之间用,分隔。值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组或JSON对象。这些结构都能嵌套。访问JSON对象的值要通过属性,访问数组的值要通过下标。20/4821使用forin遍历JSONvarobj={name:张三,age:25,sex:男};for(variteminobj){alert(item);}_----for(variteminobj){alert(obj[item]);}注意: