首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多维数组中的元素追加到html页面

问将多维数组中的元素追加到html页面
EN

Stack Overflow用户
提问于 2014-01-17 11:47:54
回答 2查看 115关注 0票数 0

我正在用jquery设计一个类别系统,在这个系统中,我可以在多维数组中插入值,然后使用jquery将它们附加到某个html页面。我遇到了一个问题,每次向数组中添加更多元素时,我都必须更新代码。

var arr = [];

代码语言:javascript
复制
arr =
{
"a":{
      "d":"value",
      "e":"value",
      "f":"value",
      "g":{"some value":[1, 2, 3]}
    },
"b":{
    "value1":"value",
    "value2":{"aaa":{"sss": "ddd"}, "bbb":{"eee": "ddd"}},
    "value3":"value vvv"
    },
"c":[1, 2, 3]
};

我希望将数组的元素附加到html页面中,以便结果如下所示:

代码语言:javascript
复制
-a
--d
---value
--e
---value
--f
---value
--g
---some value
----1
----2
----3
-b
--value1
---value
--value2
---aaa
----sss
----ddd
---bbb
----eee
----ddd
--value3
---value vvv
-c
--1
--2
--3

我想编写一系列$.each语句,以遍历任何多维数组(具有x个级别)并追加其元素,如上面所示。我遇到的问题是,我正在获取对象对象值,并且我理解其中的原因,但我需要获取并追加所有元素。我不知道如何编写$.each语句。

这就是我试过的

代码语言:javascript
复制
$.each(arr, function(idx, obj){ 
    $("#categories").append("--"+obj+"<br>");
    $.each(obj, function(key, value){
        $("#categories").append("--"+value+"<br>");
         //keep going with the each statements and check if the elements are objects

    });
});

对不起我的英语。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-17 12:24:46

这是一个为你做这件事的小提琴--我已经稍微地重新列出了你的返回,因为在字符串下面的值进一步缩进是没有意义的。然后你就无法判断它是一个键还是一个值。

代码语言:javascript
复制
var indent = "";

function myFunction(obj) {

    indent += '-';

    for (var key in obj) {

        x = obj[key];

        if ($.isPlainObject(x)) {
            $('#categories').append(indent + key + '<br />');
            myFunction(x);
        } else {
            $('#categories').append(indent + key + '<br />');
            if (typeof x === 'object') {
                for (var key in x) {
                    $('#categories').append(indent + '-' + x[key] + '<br />');
                }
            } else {
                $('#categories').append(indent + '-' + x + '<br />');
            }
        }
    }

    indent = indent.substring(0, indent.length - 1);
}

myFunction(arr);

http://jsfiddle.net/8u53K/1/

票数 2
EN

Stack Overflow用户

发布于 2014-01-17 12:43:06

几分钟后我就做了。

代码语言:javascript
复制
$.each(arr, function(idx, obj){ 
$("#categories").append("-"+idx+"<br>");
for(var i in obj)
{
    if (typeof (obj[i])!='number')
          $("#categories").append("--"+i+"<br>");
    if(typeof (obj[i])==='object')
    {
        for(var j in obj[i])
        {
            $("#categories").append("---"+j+"<br>");
            var len =obj[i][j].length;
            if(typeof len=='undefined')
            {
                for (var m in obj[i][j])
                    $("#categories").append("----"+m+"<br>");
                $("#categories").append("----"+obj[i][j][m]+"<br>");
            }
            else
            {
                for(var k=0;k<obj[i][j].length;k++)
                {
                   $("#categories").append("----"+obj[i][j][k]+"<br>");
                }
            }

        }
    }
    else
    {
    $("#categories").append("---"+obj[i]+"<br>");
    }
}

});

下面是一个示例小提琴

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

https://stackoverflow.com/questions/21185232

复制
相关文章

相似问题

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