xml地图|网站地图|网站标签 [设为首页] [加入收藏]

您的位置:亚洲必赢 > 计算机尝试 > js模拟hashtable的简单实例,模拟实现类似c

js模拟hashtable的简单实例,模拟实现类似c

发布时间:2019-09-20 20:14编辑:计算机尝试浏览(150)

    如果在c#中,大家只要用hashtable大概dictionary依照key取value的特征,就能够比较轻便地促成这些功效了。其实大家稍作处理,js也足以完结类似hashtable的意义。下边总计一下小编开荒中用到的贯彻情势,贴代码为主。
    1、完成思路:首要就是利用原型(prototype)的hasOwnProperty方法,明确指标中的项是该加多、移除如故抽取某些相配的项等。hasOwnProperty比遍历数组取值灵巧神速的地点在于:至少从代码上来看,它是O(1)复杂度的。
    2、实现代码

    尤其以为js对聚焦的管理未有c#强有力。比方在事实上费用中,平日用到在一维数组可能二维数组里取某三个满意某个原则的项,平时的管理方式正是遍历数组,相比条件,相称就抽取,然后停止循环。假如在c#中,大家要是用hashtable可能dictionary根据key取value的风味,就足以很自在地促成那些效应了。其实大家稍作管理,js也得以兑现类似hashtable的意义。上面计算一下作者开拓中用到的贯彻方式,贴代码为主。

    复制代码 代码如下:

    复制代码 代码如下:

    1、完结思路:首要正是采用原型(prototype)的hasOwnProperty方法,分明指标中的项是该增多、移除依旧抽取有些相称的项等。hasOwnProperty比遍历数组取值灵巧火速的地点在于:至少从代码上来看,它是O(1)复杂度的。
    2、达成代码

    function Hashtable()//自定义hashtable
    {
        this._hash = new Object();
        this.add = function(key, value) {
            if (typeof (key) != "undefined") {
                if (this.contains(key) == false) {
                    this._hash[key]必嬴亚洲, = typeof (value) == "undefined" ? null : value;
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
        this.remove = function(key) { delete this._hash[key]; }
        this.count = function() { var i = 0; for (var k in this._hash) { i ; } return i; }
        this.items = function(key) { return this._hash[key]; }
        this.contains = function(key) { return typeof (this._hash[key]) != "undefined"; }
        this.clear = function() { for (var k in this._hash) { delete this._hash[k]; } }
    }

    js模拟hashtable的简单实例,模拟实现类似c。// js哈希表
    function HashTable() {
    this.ObjArr = {};
    this.Count = 0;
    //添加
    this.Add = function(key, value) {
    if (this.ObjArr.hasOwnProperty(key)) {
    return false; //假如键已经存在,不增加
    }
    else {
    this.ObjArr[key] = value;
    this.Count ;
    return true;
    }
    }
    //是还是不是带有某项
    this.Contains = function(key) {
    return this.ObjArr.hasOwnProperty(key);
    }
    //取某一项 其实等价于this.ObjArr[key]
    this.GetValue = function(key) {
    if (this.Contains(key)) {
    return this.ObjArr[key];
    }
    else {
    throw Error("Hashtable not cotains the key: " String(key)); //脚本错误
    //return;
    }
    }
    //移除
    this.Remove = function(key) {
    if (this.Contains(key)) {
    delete this.ObjArr[key];
    this.Count--;
    }
    }
    //清空
    this.Clear = function() {
    this.ObjArr = {}; this.Count = 0;
    }
    }

    必嬴亚洲 1必嬴亚洲 2代码

    复制代码 代码如下:

    3、测验代码
    代码

    // js哈希表
    function HashTable() {

    // js哈希表
    function HashTable() {

    复制代码 代码如下:

        this.ObjArr = {};

        this.ObjArr = {};

    //员工
    function employee(id, userName) {
    this.id = id;
    this.userName = userName;
    }
    function test() {
    var ht = new HashTable();
    var tmpEmployee = null;
    for (var i = 1; i < 6; i ) {
    tmpEmployee = new employee(i, "Employee_" i);
    ht.Add(i, tmpEmployee);
    }
    for (var i = 1; i <= ht.Count; i ) {
    alert(ht.GetValue(i).userName); //其实等价于ht.ObjArr[i].userName
    //alert(ht.ObjArr[i].userName);
    }
    ht.Remove(1);
    alert(ht.Contains(1)); //false
    alert(ht.Contains(2)); //true
    //alert(ht.GetValue(1)); //异常
    var result = ht.GetValue(2);
    if (result != null) {
    alert("Employee Id:" result.id ";UserName:" result.userName);
    }
    ht.Add(2, "那贰个key已经存在!"); //Add无效
    //ht.Clear(); //清空
    alert(ht.Count);
    }

        this.Count = 0;

        this.Count = 0;

    调用的时候很简短,只要new一个hashtable对象,常见的功力就都有了。是否很轻松?Enjoy it。
    总计:原型链(prototype链)和魔法域链是js的多少个最基本的一部分。学懂并悟透它们,多数复杂难题都会化解;好好利用它们的特点,大家得以轻便实现特别灵活高效的效率。

        //添加
        this.Add = function(key, value) {
            if (this.ObjArr.hasOwnProperty(key)) {
                return false; //假设键已经存在,不增多
            }
            else {
                this.ObjArr[key] = value;
                this.Count ;
                return true;
            }
        }

        //添加
        this.Add = function(key, value) {
            if (this.ObjArr.hasOwnProperty(key)) {
                return false; //假使键已经存在,不增多
            }
            else {
                this.ObjArr[key] = value;
                this.Count ;
                return true;
            }
        }

    本文由亚洲必赢发布于计算机尝试,转载请注明出处:js模拟hashtable的简单实例,模拟实现类似c

    关键词: JavaScript