将嵌套列表转换为数组

时间:2016-10-21 20:30:16

标签: javascript jquery html

我的页面上有一个嵌套的无序列表,如下所示:

<ul id="myList">
    <li><a href="link">Item 1</a></li>
    <li><a href="link">Item 2</a>
        <ul>
        <li><a href="link">Sub Item 1</a></li>
        <li><a href="link">Sub Item 2</a>
        <ul>
            <li><a href="link">Sub Sub Item 1</a></li>
            <li><a href="link">Sub Sub Item 2</a></li>
        </ul></li>
        <li><a href="link">Sub Item 3</a></li>
    </ul>
    <li><a href="link">Item 3</a></li>
</ul>

我需要将它导入到这样的javascript数组中:

var topLevel = ["Item 1", "Item 2", "Item 3"]
var subLevel = [
    [],
    ["Sub Item 1", "Sub Item 2", "Sub Item 3"],
    [],
]
var subSubLevel = [
    [],
    [
        [],
        ["Sub Sub Item 1", "Sub Sub Item 2"],
        []
    ],
    []
]

我从这开始,但它没有给我我需要的嵌套数组。

var topLevelList = $("#myList > li > a").map(function() { return $(this).text(); }).get();
var subLevelList = $("#myList > li > ul > li > a").map(function() { return $(this).text(); }).get();
var subSubLevelList = $("#myList > li > ul > li > ul > li > a").map(function() { return $(this).text(); }).get();

1 个答案:

答案 0 :(得分:0)

以下是我最终要做的事情,对于将来搜索类似内容的人来说......

_build = function(t){
    return {
        'name':$(t).find('> a').html(),
        'url':$(t).find('> a').prop('href'),
        'target':$(t).find('> a').prop('target'),
        'sub-items':[]
    };
}

var theStuff = [];
$('#interactiveList').find('> li').each(function(){
    var li_a = _build($(this));
    var b = $(this).children().find('> li');
    if (b) {
        b.each(function(){
            var li_b = _build($(this));
            var c = $(this).find('> ul li');
            if (c) {
                c.each(function(){
                    var li_c = _build($(this));
                    li_b['sub-items'].push(li_c);
                });
            }
            li_a['sub-items'].push(li_b);
        });
    }
    theStuff.push(li_a);
});