如何使用javascript动态创建数组

时间:2014-01-27 17:07:13

标签: javascript jquery arrays each

我正在尝试一些可能非常容易的事情,但我似乎无法找出为什么它不起作用。我试图用jquery / javascript动态创建和数组。

我的代码;

var icons = $('.icon');

var desktopicons = [];

var user = { name: username };

var iconsetup = { myicons: [] };

desktopicons.push(user);
desktopicons.push(iconsetup);

$.each(icons, function() {
        var name = $(this).attr('name');
    var rel = $(this).attr('rel');


    var icon = { 
        icon: [{
            name: name,
            rel: rel
        }]
    };

    iconsetup.myicons[0].push(icon);

});

desktopicons.push(user);
desktopicons.push(iconsetup);

$('#desktop').append(desktopicons[0].name);
$('#desktop').append(desktopicons[1].myicons[0].icon[0].name);

不知怎的,我的日志文件说不能调用'iconsetup.myicons [0] .push(icon);'上的undefined方法。这一行。

任何能告诉我如何创建阵列的人?谢谢!

3 个答案:

答案 0 :(得分:6)

您正在使用myicons[0],这意味着您获得了myicons的第一项,而不是数组

使用

iconsetup.myicons.push(icon);

您还可以使用

简化整个.each()部分
iconsetup.myicons = icons.map(function(idx, item){
   return {icon:[{name: item.name, rel: item.rel}]}
}).get();

答案 1 :(得分:0)

您正试图将图标推送到未定义的myicons[0],而是需要推送到myicons,这会将图标添加到您的阵列中:

iconsetup.myicons.push(icon);

答案 2 :(得分:0)

您永远不会将iconsetup.myicons[0] 等于iconsetup.myicons只是一个空数组,其中没有任何内容,也没有元素0.也许你的意思是:

iconsetup.myicons.push(icon);