文档章节

按键对JavaScript对象进行排序

j
 javail
发布于 01/24 18:18
字数 419
阅读 124
收藏 0

我需要按键对JavaScript对象进行排序。

因此,以下内容:

{ 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }

会成为:

{ 'a' : 'dsfdsfsdf', 'b' : 'asdsad', 'c' : 'masdas' }

#1楼

这对我有用

/**
 * Return an Object sorted by it's Key
 */
var sortObjectByKey = function(obj){
    var keys = [];
    var sorted_obj = {};

    for(var key in obj){
        if(obj.hasOwnProperty(key)){
            keys.push(key);
        }
    }

    // sort keys
    keys.sort();

    // create new array based on Sorted Keys
    jQuery.each(keys, function(i, key){
        sorted_obj[key] = obj[key];
    });

    return sorted_obj;
};

#2楼

使用lodash可以正常工作:

some_map = { 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }

// perform a function in order of ascending key
_(some_map).keys().sort().each(function (key) {
  var value = some_map[key];
  // do something
});

// or alternatively to build a sorted list
sorted_list = _(some_map).keys().sort().map(function (key) {
  var value = some_map[key];
  // return something that shall become an item in the sorted list
}).value();

值得深思。


#3楼

假设它在显示无序对象属性的VisualStudio调试器中很有用。

(function(s){var t={};Object.keys(s).sort().forEach(function(k){t[k]=s[k]});return t})({b:2,a:1,c:3})

#4楼

如果您有嵌套的对象或嵌套的数组obj,请使用此代码。

var sortObjectByKey = function(obj){
    var keys = [];
    var sorted_obj = {};
    for(var key in obj){
        if(obj.hasOwnProperty(key)){
            keys.push(key);
        }
    }
    // sort keys
    keys.sort();

    // create new array based on Sorted Keys
    jQuery.each(keys, function(i, key){
        var val = obj[key];
        if(val instanceof Array){
            //do for loop;
            var arr = [];
            jQuery.each(val,function(){
                arr.push(sortObjectByKey(this));
            }); 
            val = arr;

        }else if(val instanceof Object){
            val = sortObjectByKey(val)
        }
        sorted_obj[key] = val;
    });
    return sorted_obj;
};

#5楼

如前所述,对象是无序的。

然而...

您可能会发现以下成语很有用:

var o = { 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' };

var kv = [];

for (var k in o) {
  kv.push([k, o[k]]);
}

kv.sort()

然后,您可以遍历kv并做您想做的任何事情。

> kv.sort()
[ [ 'a', 'dsfdsfsdf' ],
  [ 'b', 'asdsad' ],
  [ 'c', 'masdas' ] ]

本文转载自:https://fr.sofbug.com/question/MwFV

j
粉丝 7
博文 1547
码字总数 0
作品 0
深圳
私信 提问
JavaScript基础学习总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/fengxinlinux/article/details/96162470 文章目录 document.getElem...

Rotation.
2019/07/16
0
0
Quickjs UAF漏洞分析,利用以及修复

作者:Alex 本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org 0x01 介绍 Quickjs是我偶像的偶像所写的一个轻量的js引擎,先放张benchmark。可...

Alex
2019/08/02
0
0
5道 JavaScript 练习题

在深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解中最后的看到的一些练习题,并尝试自己做且记录下来。 找出数字数组中最大的元素(使用Math.max函数) 转化一个数字数组为...

_我已经从中二毕业了
2019/09/29
0
0
Javascript 的新功能 — Part 1

作者:Deepak Gupta 翻译:疯狂的技术宅 原文:medium.com/@ideepak.js… 未经允许严禁转载 JavaScript 的应用领域已经从 Web 浏览器扩展到所有需要编程的地方。 Node.js — 用于CLI和服务器...

前端先锋
2019/09/29
0
0
开箱即用的JS干货助力金三银四

前言 2019已经过去,在疫情没有消去,居家远程办公之际,整理一些工作上常用的JS代码给大家做下分享,一方面为大家更好地理解和巩固知识,一方面也为金三银四助力,喜欢的大佬们可以给个小赞...

lzg9527
02/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

植物:君子兰

ylbtech-植物:君子兰 君子兰(学名: Clivia miniata),别名 剑叶石蒜、大叶石蒜,是 石蒜科 君子兰属的 多年生草本植物,属观赏 花卉,原产于 南非南部。 花期长达30-50天,以冬春为主,元...

osc_gp8avabl
4分钟前
17
0
植物:玉簪

ylbtech-植物:玉簪 玉簪(学名: Hosta plantaginea (Lam.) Aschers.),又名 白萼、白鹤仙,是 百合科,玉簪属的 多年生宿根植物。叶基生,成簇,卵状心形、卵形或卵圆形。 花葶高40-80...

osc_1psr53ow
5分钟前
10
0
植物:迎春花

ylbtech-植物:迎春花 迎春花(学名: Jasminum nudiflorum Lindl. ):别名 迎春、黄素馨、金腰带,落叶 灌木丛生。株高30-500厘米。小枝细长直立或拱形下垂,呈纷披状。3小叶复叶交互对生,...

osc_fscujk71
6分钟前
14
0
植物:雪铁芋

ylbtech-植物:雪铁芋 雪铁芋(学名: Zamioculcas zamiifolia Engl.),又名为 金钱树。是多年生常绿 草本植物,是极为少见的带地下 块茎的观叶植物。地上部无主茎,不定芽从块茎萌发形成大...

osc_47qtuhkb
7分钟前
11
0
Java之关键字的使用

java中有很多的关键字,他们的使用让Java语言变得更加灵活、易用,下面将介绍Java中最常用的几个关键字并说明其用法。 关键字:return 1.使用范围: 使用在方法体中 2.作用: ① 结束方法 ②...

RealBruce
8分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部