• 数组求和/去重


    求和
    //递归
    function sum(arr) {
        var len = arr.length;
        if(len == 0){
            return 0;
        } else if (len == 1){
            return arr[0];
        } else {
            return arr[0] + sum(arr.slice(1));
        }
    }
    sum([1,2,3,4,5]);



    //常规循环:
    function sum(arr) {
        var s = 0;
        for (var i=arr.length-1; i>=0; i--) {
            s += arr[i];
        }
        return s;
    }
    sum([1,2,3,4,5]);
    //函数式编程 map-reduce:
    function sum(arr) {
        return arr.reduce(function(prev, cur, idx, arr){
            return prev + curr;
        });
    }
    sum([1,2,3,4,5]);
    //forEach遍历:
    function sum(arr) {
        var s = 0;
        arr.forEach(function(val, idx, arr) {
            s += val;
        }, 0);
      
        return s;
    };
    sum([1,2,3,4,5]);
    //eval:
    function sum(arr) {
        return eval(arr.join("+"));
    };
    sum([1,2,3,4,5]);
     
    去重
    方法一:不改变原来数组
    function remove(arr,item){
        return arr.filter(function(ele){
             return ele != item;
        })
    }
    remove([1, 2, 3, 4, 2], 2);
     
    方法二:不改变原来数组
    function remove(arr, item) {
          a=[];
      for(var i=0;i<arr.length;i++){
        if(arr[i]!=item){
          a.push(arr[i]);
        }
      }
      return a;
    }
    remove([1, 2, 3, 4, 2], 2);
     
    方法三:改变原来数组
    function removeWithoutCopy(arr, item) {
      for(var i=0;i<arr.length;i++){
              if(arr[i]==item){
              arr.splice(i,1);
              i--;
            }
      }
      return arr;
    }
    removeWithoutCopy(([1, 2, 3, 4, 2], 2);

    请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    Array.prototype.distinct = function() {
        var ret = [];
        for (var i = 0; i < this.length; i++)
        {
            for (var j = i+1; j < this.length;) {   
                if (this[i] === this[j]) {
                    ret.push(this.splice(j, 1)[0]);
                else {
                    j++;
                }
            }
         }
         return ret;
    }
    //for test
    alert(['a','b','c','d','b','a','e'].distinct());
  • 相关阅读:
    HDU 1548 A strange lift (Dijkstra)
    HDU 1217 Arbitrage (Floyd)
    HDU 1385 Minimum Transport Cost (Dijstra 最短路)
    考研总结 2016-12-31 20:10 219人阅读 评论(21) 收藏
    归并排序 2016-12-30 20:17 208人阅读 评论(21) 收藏
    docker安装 2016-11-06 19:14 299人阅读 评论(31) 收藏
    Docker初步了解 2016-10-30 20:46 279人阅读 评论(31) 收藏
    [自考]感想 2016-10-23 20:28 261人阅读 评论(32) 收藏
    [自考]C++中一些特殊用法 2016-10-16 22:12 318人阅读 评论(30) 收藏
    Fitnesse批量读取变量信息,并保存到用例执行上下文中
  • 原文地址:https://www.cnblogs.com/yzhweb/p/7522038.html
Copyright © 2020-2023  润新知