jQuery每个数组

Sem*_*Sem 2 arrays each jquery multidimensional-array

analyse : function (that) {

        var a = new Array();
        var x = 0;

        $(that).children("li").each(function(){
            console.log('test1');
            a[x]['name'] = 'f'; 
            a[x]['link'] = 'UUUUUUUUUUU';
            console.log('test2');
            x++;
        })

        return a;
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个数组来存储PHP菜单中的层次结构.

控制台不会显示"test2",我做错了什么?


在迪迪埃G的帮助下转变为这个:

analyse : function (that) {
        return $(that).children('li').map(function() {
            var b = {
                name: $(this).children('a').text(), 
                link: $(this).children('a').attr('href')
            };
            if ($(this).children('ul').size() > 0) {
               b.childs =  mcms.module.analyse($(this).children('ul'));
            } 
            return b;
        });
    }
Run Code Online (Sandbox Code Playgroud)

所以,如果我说var y = analyse('#menu');我得到了一大堆!^^

Did*_*hys 9

'a[x]'在那一刻是不确定的.你必须首先构建一个对象并将其分配给'i'位置('x'确实是迭代器的非标准名称,感谢@Cito):

var a = new Array();
var i = 0;

$(that).children("li").each(function(){
        console.log('test1');
        a[i] = { name: 'f', link: 'UUUU' };
        console.log('test2');
        i++;
});
Run Code Online (Sandbox Code Playgroud)

注意:你的代码;在each()之后错过了一个.虽然它是有效的javascript来省略分号,但我认为最好明确地使用它们以避免误解.


使用.map()可以实现创建数组

var a = [];

// .map() returns a jquery array, to obtain a pure javascript array, you must call .toArray() afterwards
a = $(that).children('li').map(function() {
    return { name: 'f', link: 'UUUU' };
}).toArray();
Run Code Online (Sandbox Code Playgroud)

这是一个jsfiddle来说明

文章涵盖了)在jQuery的建设数据收集从列表的使用.每()和.map(的.