《JavaScript高级程序设计 第3版》-学习笔记-3
P84-P137页,
这一章看的真久,这个月事太多了。有些内容在代码注释里没提出来了
1、JS强大的数组类型,元素类型任意,提供了非常多的操作数组的方法和属性
1 /* 2 数组类型 3 */ 4 5 //stack 6 var colors = ['red','blue']; 7 colors.push('brown'); 8 console.log(colors); 9 console.log(colors.length); 10 var item = colors.pop(); 11 console.log(item); 12 console.log(colors); 13 14 //队列 15 colors = []; 16 var count = colors.push('red','green'); 17 console.log(count); 18 console.log(colors); 19 count = colors.push('black'); 20 console.log(count); 21 item = colors.shift(); 22 console.log(item); 23 console.log(colors); 24 console.log(colors.length); 25 26 //pop 与 unshift搭配可以实现反向队列 27 28 29 30 31 //重新排序 32 var values = [1,2,3,4,5,6]; 33 values.reverse(); 34 console.log(values); 35 36 values = [0,1,5,10,15]; 37 values.sort();//sort方法默认进行字符串比较,即调用toString方法比较结果 38 console.log(values); 39 40 //为了实现自定义排序,可以这样 41 function comp(var1,var2){ 42 return var1 - var2; 43 } 44 45 values.sort(comp); 46 console.log(values); 47 48 /* 49 数组操作方法 50 */ 51 52 53 //数组复制合并 54 var colors1 = ['red','green','blue']; 55 var colors2 = colors1.concat('yellow',['black','brown']); 56 console.log(colors1); 57 console.log(colors2); 58 59 60 //slice方法,这个方法的操作不会影响原来的数组 61 colors = ['red','green','blue','yellow','purple']; 62 colors2 = colors.slice(1); 63 var colors3 = colors.slice(1,4); 64 console.log(colors2); 65 console.log(colors3); 66 67 //splice方法,最强的数组操作方法 68 //删除 69 colors.splice(0,2);//要删除的第一项的位置和要删除的项数 70 console.log(colors); 71 //插入 72 colors.splice(2,0,'red','green');//起始位置、0(要删除的项)和要插入的项-‘red’,‘green’ 73 console.log(colors); 74 //替换 75 colors.splice(2,1,'white');//起始位置,删除项数,插入项 76 console.log(colors); 77 //这个方法的返回值是被删除的数组,如果没有删除,返回一个空数组 78 79 console.log(colors.indexOf('green')); 80 console.log(colors.lastIndexOf('green')); 81 82 //数组迭代方法 83 //every,都返回ture才返回true 84 numbers = [1,2,3,4,5,4,3,2,1]; 85 var everyRes = numbers.every(function(val,index,arr){ 86 return (val > 2); 87 }); 88 console.log(everyRes); 89 90 //some,只要有一项为true,则结果为true 91 var someRes = numbers.some(function(val,index,arr){ 92 return val > 2; 93 }); 94 console.log(someRes); 95 96 //filter,返回该函数会返回true的项构成的数组 97 var filterRes = numbers.filter(function(val ,index,arr){ 98 return val > 2; 99 }); 100 console.log(filterRes); 101 102 //map,返回函数调用结果形成的数组; 103 var mapRes = numbers.map(function(val,index,arr){ 104 return val * 2; 105 }); 106 console.log(mapRes); 107 108 //forEach,这个方法没有返回值 109 numbers.forEach(function(val,index,arr){ 110 //执行操作 111 });
2、Date类型
1 /* 2 Date类型 3 */ 4 5 var now = new Date(); 6 console.log(now); 7 8 var someDate = new Date(Date.parse('May 25,2005'));//与new Date('May 25,2005)等价 9 console.log(someDate); 10 11 var y2k = new Date(Date.UTC(2012,5,8));//2012年6月8日 12 console.log(y2k); 13 14 var start = Date.now(); 15 start = +new Date();//这样是为不支持Date.now的浏览器兼容,把Date对象转换成字符串 16 17 //日期类支持大于小于操作符 18 console.log(now > start); 19 20 //日期格式化 21 var date = new Date(); 22 23 console.log(date.toLocaleDateString());//2015-03-29; 24 console.log(date.getFullYear()+'...'+(date.getMonth()+1)+'...'+date.getDate());