zoukankan      html  css  js  c++  java
  • 数组求和/去重

    求和
    //递归
    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());
  • 相关阅读:
    LeetCode题目:Gray Code
    LeetCode题目: Remove Duplicate Letters
    非阻塞socket中read、write返回值
    C连接MySql
    使用GDB调试程序
    C语言中使用库函数解析命令行参数
    把服务器当网盘玩 教你从云服务器下载自己的文件
    微信小程序 地图选点 获取用户选择的定位信息 wx.chooseLocation
    如何避免高不成低不就? 疫情当下Java学习路线分享
    微信小程序 获取手机号 JS
  • 原文地址:https://www.cnblogs.com/yzhweb/p/7522038.html
Copyright © 2011-2022 走看看