复习数组操作push,unshift,pop,shift,splice等操作
1、求一个星期几的前三天和后三天
假定一个正常的周 var arr = [1,2,3,4,5,6,7];
去掉后三天就本身和前三天 所以单独的对后三天操作;让其在后面即可
1 var date = new Date(); 2 var day = date.getDay(); 3 day = day || (7 - day); 4 function getWeek(day){ 5 var arr = [1,2,3,4,5,6,7]; 6 var b = day - 4; 7 // 取后三天 8 if(b >= 0){ 9 for(var i = 0; i < b;i++){ 10 // [] 11 arr.push(arr.shift()); 12 } 13 }else{ 14 for (var i = 0 ; i < -b;i++) { 15 arr.unshift(arr.pop()); 16 }; 17 } 18 arr.splice(3,1); 19 return arr; 20 } 21 getWeek(6);
2、取两个数组的重复项
常规的方法使用两个循环判断即可;
根据数组去重的方法,好处是当多个数组的时候仍然可以快速找出重复项
在原型上扩展一个方法getAnd,用于取出数组中的重复项;
多个数组合并成一个使用即可
Array.prototype.getAnd = function(){ var len = this.length; var result = []; for(var i = 0; i < len; i++){ var obj = this[i]; for (var j = i+1; j < len;) { if(this[j] == obj){ result = result.concat(this.splice(j,1)); break; }else{ j++; } }; }; return result; } var arr1 = [1,2,3,5,6,9]; var arr2 = [1,2,3,5,10,11]; console.log(arr1.concat(arr2).getAnd());
这样的效率没有直接循环高,仅提供思路作参考。。