javascript - 从 json 生成序列

标签 javascript jquery json sequence

客户有一个要求,即内容文本应以每个单独内容的新序列号开头。对于内容 JSON,请考虑以下示例 JSON。我将在前端获取此 JSON 作为后端的响应。我正在递归地迭代该 JSON,所以现在我想在迭代它的同时创建它的序列号。有什么简单的方法可以做到这一点?

var myobj = {
"name": "sample",                     //1
"def": [                              //2
      {
        "setId": 1,                    //2.1.1
         "setDef": [                   //2.1.2
            {        
                "type": "STRING",      //2.1.2.1.1
                "name": "ABC"          //2.1.2.1.2
            },
            {
                "type": "STRING",      //2.1.2.2.1
                 "name": "XYZ"          //2.1.2.1.2
            }
        ]
    },
    {
        "setId": 2,                 //2.2.1
        "setDef": [                 //2.2.2
            {
                "type": "STRING",   //2.2.2.1.1
                "name": "abc"       //2.2.2.1.2
            },
            {
                "type": "STRING",   //2.2.2.2.1
                "name": "xyz"       //2.2.2.1.1
            }
        ]
    }
],
"property": {         //3
    {
        "color": "red" //3.1.1
    },
    {
        "run": true    //3.2.1
    },
    {
        "width": [120, 330, 332]   //3.3.1
    }
},
listing: true  //4

};

这是我的代码:

function displayContent(obj) {
    jQuery.each(obj, function(key, val) {
         recursiveIterObj(key, val, obj); 
    });
}
function recursiveIterObj(key, val, obj) {
        if(!isplain(val)){
            setContentData(key, curr_seq, last_seq, "");
            $.each(val, function(k,v){
                recursiveIterObj(k, v, val);
            });
        }else{
            setContentData(key, curr_seq, last_seq, val);
        }
}

function isplain(data) {
    return (typeof data === 'string' || typeof data === 'number')?
       true:false;
}
function setContentData(key, curr_seq, last_seq, val){
            $(".heading").text(key);
            $(".sequence").txt(curr_seq); // if this is 2.1.2 or 4
            $(".sequence_last").txt(last_seq); // then, this should be 2.1.1 or 3
            $(".txt_content").text(val);
}
$(function(){
 displayContent(obj);
})

注意 - 上面的 JSON 是来自互联网的随机 json。

最佳答案

JavaScript 中不保证对象中的属性顺序。只有在数组的情况下,您才会在 JavaScript 中迭代时看到顺序。

自 ECMAScript 2015 起,使用 Map 对象可能是一种替代方案。 Map 与 Object 有一些相似之处并保证键的顺序。

关于javascript - 从 json 生成序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33257564/

相关文章:

javascript - 函数运行一次成功然后连续失败

python - 在 python 中更新/附加到 json(嵌套)

javascript - 主要的 JavaScript 内存泄漏

javascript - 获取所有按钮标签类型

javascript - jQuery 插件上的 Click Function 只允许单击

javascript - 用于 IE8 的占位符代码导致下拉登录字段失去焦点

ios - 重复符号链接(symbolic link)器错误

javascript - 过滤并包含给出意想不到的结果

javascript - Backbone.js 设置 View 属性

javascript - 从 Bluebird Promise 对象访问 jQuery $.get URL