将键映射到值&的Javascript对象允许迭代键

时间:2012-09-24 05:26:38

标签: javascript jquery

我需要在javascript中创建对象,允许使用键和&获取值。也迭代键。主要要求是按键获取值,但需要迭代以按值(整数)维护条目的排序顺序。

如何创建这样的对象?

3 个答案:

答案 0 :(得分:1)

  1. JavaScript中的所有对象都是JSONeable! (真的是一个字)。
  2. JavaScript中的所有对象都是键值映射的集合。
  3. for in循环遍历对象的键。

答案 1 :(得分:1)

sampleJson={
"1":"john",
"2":"johny"
}

您可以使用for循环

进行迭代
for(key in sampleJson){
//ur code
}

答案 2 :(得分:0)

本机对象并不完全支持您正在寻找的内容,但是在本机对象周围创建一个提供额外功能的包装器非常简单。

可能的方法:

function KeySortArr(obj) {
    this.obj = obj || {};
}

KeySortArr.prototype = {
    get: function(key) {
        return this.obj[key];
    },

    set: function(key, value) {
        this.obj[key] = value;
    },

    keys: function() {
        var keys = [];
        for(var i in this.obj) {
            if (this.obj.hasOwnProperty(i))
                keys.push(i);
        }
        return keys;
    },

    getKeysSortedByValue: function() {
        var obj = this.obj;
        return this.keys().sort(function(a, b) {
            return obj[a] > obj[b];
        });
    }
};

用法:

var arr = new KeySortArr();
arr.set("test", 4);
arr.set("another", 2);
arr.set("ok", 60);
arr.set("last", 14);

以下:

arr.getKeysSortedByValue();

返回:

["another, "test", "last", "ok"]

换句话说,键按其相关值排序。这可能不是你想要的,但它应该是接近的。