js01----json,数组
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> var json = { name : 'leo', age : 32 }; alert( json.name ); //json是跨平台的。 var arrUrl = [ 'img/1.png', 'img/2.png', 'img/3.png', 'img/4.png' ]; var arrText = [ '小宠物', '图片二', '图片三', '面具' ]; //使用json存放 var imgData = { url : [ 'img/1.png', 'img/2.png', 'img/3.png', 'img/4.png' ], text : [ '小宠物', '图片二', '图片三', '面具' ] }; alert( imgData.url );//显示整个数组 alert( imgData.url[2] ); //var json1 = { name : 'miaov' }; var json2 = { 'name' : 'miaov' };//2种写法一样的,但是加引号是推荐的格式,不会兼容性出现问题 alert( json2.name );//用点不加引号 alert( json2['name'] );//用中括号,里面要加引号 json2.name = '妙味'; json2['name'] = 'miaov'; alert(json2.name); var json3 = { abc : 123, xyz : '' }; // { [], [], [] } [ {}, {}, {} ] var arr = [ { 'name' : 'TM', 'age' : 23 }, { 'name' : 'leo', 'age' : 32 } ]; alert( arr[0].name + '今年有' + arr[1]['age'] );//点不加引号,中括号加引号 var json4 = { 'name' : 'miaov', 'age' : 3, 'fun' : '前端开发' }; for ( var attr in json4 ) { alert( attr );//每一个键值 alert( json4[attr] );//不加引号,json4['attr']加引号表示获取键为'attr'的值 } var json5 = { 'url' : [ 'img/1.png', 'img/2.png', 'img/3.png', 'img/4.png' ], 'text' : [ '小宠物', '图片二', '图片三', '面具' ] }; // var arr = [ {}, {}, {} ]; for ( var attr in json5 ) {//for in 遍历json,attr是每一个键 for ( var i=0; i < json5[attr].length; i++ ) {//遍历数组用for循环 alert( json5[attr][i] ); } } </script> <script> var str = ''; var num = 0; for ( var attr in document ) {//for in遍历对象,for in 是没有1,3,,4数字的,只能够自己加。 str += num + '. ' + attr + ':' +document[attr] + '<br />'; num ++; } document.body.innerHTML = str; </script> <script> //数组可以用for in 和for循环遍历,json只能用for in 不能够用for循环 var json = { 'url' : [ 'img/1.png', 'img/2.png', 'img/3.png', 'img/4.png' ], 'text' : [ '小宠物', '图片二', '图片三', '面具' ] }; alert(json.length),//json没有长度属性 for ( var i=0; i < json.length; i++ ) {//json不能用for循环 } var arr = [ 'a', 'b', 'c' ]; for ( var i in arr ) {//i是0,1,2,相当于数组是json的特殊形式,前面默认有键0,1,2,3 alert( arr[i] ); } </script> </head> <body> </body> </html>
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> var arr = [ 1,2,3 ];//2中形式差不多 var arr = new Array(1,2,3); //对象的定义方式 alert( arr ); var arr = new Array(); arr[1] = 123; //动态添加数据 var arr = new Array(3);//3表示长度是3 var arr = [3];//长度是1 var arr = new Array('3'); alert( arr.length );//长度是1 var arr = [ 'aaa',2,3 ]; alert( arr.length ); // 3 arr.length = 1;//数组长度可写,长度1则把后面的去掉了。 arr.length = 0;//长度是0,快速清空数组。 arr = [];//数组重新复制为空,也是清空数组,效率比length=0效率更高。 alert( arr ); var str = 'aaaaa'; // str.length = 1; 字符串的length属性是不可写的 alert(str); </script> <script> var arr = [ 1,2,3 ]; alert( arr.push( 'abc' ) ); //数组后面添加,push返回值是数组的长度。 alert( arr ); alert( arr.unshift( 0 ) ); //前面添加, IE 6 7 不支持 unshift 返回值 // alert( arr ); </script> <script> var arr = [ 'TM', '钟毅', '张森', '杜鹏', 'Leo' ]; alert( arr.pop() );//后面删除一个,返回值的删除的元素 alert( arr ); alert( arr.shift() );//前面删除,返回值是删除的元素 alert( arr ); </script> <script> var arr = [ 'TM', '钟毅', '张森', '杜鹏', 'Leo' ]; arr.unshift(arr.pop());//后面删除一个前面添加 arr.push(arr.shift())//删除第一个添加到末尾 alert( arr ); </script> <script> var arr = [ 'TM', '钟毅', '张森', '杜鹏', 'Leo' ]; // splice :删除、替换、添加 arr.splice( 1 , 2 )//从第1个位置开始删除2个 alert(arr.splice( 1 , 2 ))//返回被删除的 arr.splice( 1 , 1, 'aaa')//从第1个位置开始替换1个aaa arr.splice( 0, 2, '莫涛 or 钟毅' );//从0开始替换2个成莫涛 or 钟毅,变成[ '莫涛 or 钟毅', '张森', '杜鹏', 'Leo' ] alert( arr.splice( 1 , 1, 'aaaaaa' ) );//返回被删除的 arr.splice( 1, 0, '钟毅媳妇儿~', '钟毅媳妇们~' ) ;//第一个位置开始,这个位置不删除也不替换,前面添加,[ 'TM','钟毅媳妇儿~', '钟毅媳妇们~', '钟毅', '张森', '杜鹏', 'Leo' ] alert( arr.splice( 1, 0, '钟毅媳妇儿~', '钟毅媳妇们~' ) );//什么都没有删除就都没有 alert( arr ); //数组去重 var arr = [ 1,2,2,4,2,1,3,4 ]; for ( var i=0; i<arr.length; i++ ) { for ( var j=i+1; j<arr.length; j++ ) { if ( arr[i] == arr[j] ) { arr.splice( j, 1 ); j--; } } } alert( arr ); </script> <script> //快速排序,希尔排序,冒泡,归并,选择,插入,sort用的是 var arr = [ 'c', 'd', 'a', 'e' ]; arr.sort(); alert( arr ); var arr2 = [ 4,3,5,5,76,2,0,8 ]; arr2.sort(); alert( arr2 );//0,2,3,4,5,76,8,默认加引号,按照字符串排序 arr2.sort(function ( a, b ) {//匿名函数,从数组随机抽出2个数a,b,a-b(76-2=74为正数则交换位置,负数不交换位置,为0则不动) return a - b;//从小到大,b-a从大到小, }); alert( arr2 ); var arrWidth = [ '345px', '23px', '10px', '1000px' ]; arrWidth.sort(function ( a, b ) { return parseInt(a) - parseInt(b); }); alert( arrWidth ); </script> <script> //打乱顺序 var arr = [ 1,2,3,4,5,6,7,8 ]; arr.sort(function ( a, b ) { return Math.random() - 0.5; }); alert( arr ); alert( Math.random() ); </script> </head> </head> <body> </body> </html>
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> //随机函数 alert( Math.round(3.4) );//round() 4舍5入 Math.random() //0~1 Math.round(Math.random());//0、1 //0~10 alert( Math.round(Math.random()*10) ); // 5~10 alert( Math.round( Math.random()*5 + 5 ) ); // 10~20 alert( Math.round( Math.random()*10 + 10 ) ); // 20~100 alert( Math.round( Math.random()*80 + 20 ) ); // x ~ y var x = 3; var y = 49; // alert( Math.round( Math.random()*(y-x) + x ) ); // 0~x // alert( Math.round( Math.random()*x) ); // 1~x ceil向上取整 alert( Math.ceil( Math.random()*x) ); // 课上小练习: // 随机产生 100 个从 0 ~ 1000 之间不重复的整数 // var str = 'aaasdlfjhasdlkfs'; // indexOf('s') —— 为数组编写该方法:indexOf('img/1.jpg') </script> <script> //concat 连接数组 var arr1 = [ 1,2,3 ]; var arr2 = [ 4,5,6 ]; var arr3 = [ 7,8,9 ]; arr1.concat(arr2); alert( arr1.concat( arr2, arr3 ) ); var arr1 = [ 1,2,3,4,5,6 ]; arr1.reverse();//反转 alert( arr1 ); var str = 'abcdef'; alert(str.split('').reverse().join(''));//split('')字符转成数组,join('')数组转成字符串,数组元素通过''链接在一起 </script> </head> <body> </body> </html>