Ordered hash in JavaScript

前端 未结 9 1016
心在旅途
心在旅途 2020-12-05 17:34

JavaScript objects have no order stored for properties (according to the spec). Firefox seems to preserve the order of definition of properties when using a for...in<

9条回答
  •  甜味超标
    2020-12-05 17:35

    @Vardhan 's answer in plain JavaScript, using closure instead of classical OO and adding an insert() method:

    function makeOrderedHash() {
        var keys = [];
        var vals = {};
        return {
            push: function(k,v) {
                if (!vals[k]) keys.push(k);
                vals[k] = v;
            },
            insert: function(pos,k,v) {
                if (!vals[k]) {
                    keys.splice(pos,0,k);
                    vals[k] = v;
                }
            },
            val: function(k) {return vals[k]},
            length: function(){return keys.length},
            keys: function(){return keys},
            values: function(){return vals}
        };
    };
    
    var myHash = makeOrderedHash();
    

提交回复
热议问题