zoukankan      html  css  js  c++  java
  • 面试题之JavaScript 请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    小编才疏学浅,若文章、答案有错误之处,欢迎邮件通知小编及时修改,同时也可以面试题投稿。最后祝大家共同进步!
    请给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());
    

    大致的思路都差不多,不同的是答案使用的是splice方法,splice是array中最强大的方法,可以进行插入删除替换的功能(高级js教程P95),代码中splice(j,1)[0],表示在第j位,删除一个项,splice返回被删除的项组成的数组,当前数组中只删除了一个,只有一项,所以是[0]取第一位即为删除的项数。

  • 相关阅读:
    02-zabbix安装部署
    01-zabbix服务说明
    00-ContOS 7.5编译安装MySQL-5.7.30
    bitset习题
    数颜色[分块]
    旋转子段 (思维stl)
    双栈排序(洛谷P1155)二分图的判定+思维贪心
    常见的系统获取唯一码方式
    SHELL-数组
    Prometheus-alertmanager组件使用
  • 原文地址:https://www.cnblogs.com/jiaoshou/p/13714368.html
Copyright © 2011-2022 走看看