首页 > 解决方案 > 从 JSON 对象按顺序将值存储在数组中

问题描述

我在 JSON 响应下面有这个。JSON 中的 Order 属性可以按 3、7、8、9 等随机顺序出现。

var respponseArr = '{"Test3_3":{"Name":"Test3","Notes":"This is third note","Order":"3"}, {"Test7_7":{"Name":"Test7","Notes":"This is seventh note","Order":"7"}';

我想遍历这个 JSON 响应并按升序存储在 JSON 对象中,如下所示

var tempArr = '{'Order' : '1','Name': 'Test1', 'Notes': 'This is first Notes'}, {'Order' : '3','Name': 'Test3', 'Notes': 'This is third Notes'}, {'Order' : '7','Name': 'Test7', 'Notes': 'This is seventh Note'}';

JS

var respponseArr1 = JSON.parse(JSON.stringify(respponseArr))

for(var tmp1 in respponseArr1) {
    var temp2 = respponseArr1[tmp1];
    for(var num in temp2) {
        var ndata = temp2[num];
        for(var l in ndata) {
            console.log(tmp1 + ' -> ' + num + ' -> ' + l + ' = ' + ndata[l]);
        }
    }
}

标签: javascriptjsonnested

解决方案


不要将它们存储为对象,而是尝试将它们存储在数组中。例如:

responseArr = {[{Order: 1},{Order:2},...,{Order: n}]}

这将允许您使用诸如 Sort() 之类的数组方法,其时间复杂度为 n(log n),空间复杂度为 n。

或者

您可以在此处学习 javascript 中的 Map()

新 Map() 全局对象中的所有键值对都被索引。


推荐阅读