首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript对象,它将键映射到值并允许对键进行迭代

Javascript对象,它将键映射到值并允许对键进行迭代
EN

Stack Overflow用户
提问于 2012-09-24 13:26:38
回答 3查看 3.1K关注 0票数 0

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

如何创建这样的对象?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-24 13:33:15

代码语言:javascript
复制
sampleJson={
"1":"john",
"2":"johny"
}

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

代码语言:javascript
复制
for(key in sampleJson){
//ur code
}
票数 1
EN

Stack Overflow用户

发布于 2012-09-24 13:29:49

  1. JavaScript中的所有对象都是JSONeable!(这真的是一个词)。
  2. JavaScript中的所有对象都是键值映射的集合。
  3. for in循环迭代对象的键。
票数 1
EN

Stack Overflow用户

发布于 2012-09-24 14:44:20

原生对象并不完全支持您正在寻找的东西,但是在原生对象周围创建一个包装器来提供额外的功能是相当简单的。

一种可能的方法:

代码语言:javascript
复制
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];
        });
    }
};

用法:

代码语言:javascript
复制
var arr = new KeySortArr();
arr.set("test", 4);
arr.set("another", 2);
arr.set("ok", 60);
arr.set("last", 14);

然后是以下内容:

代码语言:javascript
复制
arr.getKeysSortedByValue();

返回:

代码语言:javascript
复制
["another, "test", "last", "ok"]

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12559282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档