0

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

我该如何去创建这样一个对象?

4

3 回答 3

1
  1. JavaScript 中的所有对象都是 JSONeable!(真的是一个词吗)。
  2. JavaScript 中的所有对象都是键值映射的集合。
  3. for in循环遍历对象的键。
于 2012-09-24T05:29:48.737 回答
1
sampleJson={
"1":"john",
"2":"johny"
}

您可以使用 for in 循环进行迭代

for(key in sampleJson){
//ur code
}
于 2012-09-24T05:33:14.923 回答
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"]

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

于 2012-09-24T06:44:19.767 回答