zoukankan      html  css  js  c++  java
  • 复习数组做的两道题

    复习数组操作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());

    这样的效率没有直接循环高,仅提供思路作参考。。

  • 相关阅读:
    HDU 4069 Squiggly Sudoku
    SPOJ 1771 Yet Another NQueen Problem
    POJ 3469 Dual Core CPU
    CF 118E Bertown roads
    URAL 1664 Pipeline Transportation
    POJ 3076 Sudoku
    UVA 10330 Power Transmission
    HDU 1426 Sudoku Killer
    POJ 3074 Sudoku
    HDU 3315 My Brute
  • 原文地址:https://www.cnblogs.com/w3cjiangtao/p/3244727.html
Copyright © 2011-2022 走看看