【问题标题】:How to create array dynamically with javascript如何使用javascript动态创建数组
【发布时间】:2014-01-27 17:07:13
【问题描述】:

我正在尝试一些可能很容易但我似乎无法找出它为什么不起作用的东西。我正在尝试使用 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);' 上调用未定义的方法推送这一行。

谁能告诉我如何创建数组?谢谢!

【问题讨论】:

  • iconsetup.myicons.push(icon);
  • iconsetup.myicons 是一个空数组。
  • 你不需要[0], iconsetup.myicons.push(icon);
  • 我不清楚何时使用 [0] 何时不使用.. myicons 是一个数组,我认为因为我在 var iconsetup 中声明了 myicons: []

标签: javascript jquery arrays each


【解决方案1】:

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

使用

iconsetup.myicons.push(icon);

您还可以简化整个.each() 部分

iconsetup.myicons = icons.map(function(idx, item){
   return {icon:[{name: item.name, rel: item.rel}]}
}).get();

【讨论】:

  • 我不清楚何时使用 [0] 何时不使用.. myicons 是一个数组,我认为因为我在 var iconsetup 中声明了 myicons: []
  • @MartijnMichel myicons 一个数组,所以myicons[0] 有效,但它返回该数组中的第一项。而且那个项目不是一个数组。
  • 任何机会你能解释那个简化版本,我不明白;p
  • @MartijnMichel 关于map() 方法见api.jquery.com/map 这实际上只是一个轻微的优化。如果您对该代码感到不舒服,请随意忽略它。您自己的方法非常好。
【解决方案2】:

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

iconsetup.myicons.push(icon);

【讨论】:

    【解决方案3】:

    您永远不会将iconsetup.myicons[0] 等于 设置为任何值。 iconsetup.myicons 只是一个空数组,里面什么都没有,也没有元素 0。也许你的意思是:

    iconsetup.myicons.push(icon);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 2012-08-02
      • 2023-03-26
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      相关资源
      最近更新 更多