【问题标题】:declare dynamic array based on dynamic variables in jquery在jquery中根据动态变量声明动态数组
【发布时间】:2015-03-23 16:01:29
【问题描述】:

这是一个数组

 ARRAY = ["A","B","C","D","E"];
 var mlength = ARRAY.length;

根据mlength,必须声明DATES 的长度。这里长度是 5。因此数组 DATES 必须是 var DATES = [[], [], [], [], []]; 类似地,如果数组 ARRAY 长度是 3 则 var DATES = [[], [], []]

这是静态声明。如何根据数组ARRAY长度进行声明?

【问题讨论】:

  • 你是如何声明这些变量的?我觉得你试图以错误的方式解决这个问题......
  • 为什么不将值存储在一个嵌套数组中?
  • 我已经编辑了我的代码。我只想声明一个空数组。稍后我会将值推入其中。那是不同的编码。只有数组的大小取决于变量的数量
  • 使用对象,确实是更好的方法
  • @rjirji 但大小根本不重要,如果您只是将值推送到它上面。

标签: javascript jquery arrays multidimensional-array


【解决方案1】:

嗯,这很简单:

var DATES=[];for (var i=0;i<mlength;DATES.push([]),i++);

只需将一个空数组推送到DATESmlength 次数。

【讨论】:

  • 忘记一切。请再看一遍问题。我已经完全改变了它
  • “请再看一遍问题。我已经完全改变了它”顺便说一句,这在 SO 上被认为是错误的形式。如果您想对自己的问题进行如此大的更改,请创建一个新问题,并在必要时删除该问题。
  • @theonlygusti - 我明白了 :)
  • @theonlygusti - 你能再帮我一个忙吗?如何声明 MARKETS[i].push(parseFloat(findDataForMonth(mname+i, month)) || null);以同样的方式,这里的 i=mlength MARKETS[i] 和 mname+i 将在 for 循环中被 i 替换
【解决方案2】:

使用Array.prototype.fill()的替代解决方案

ARRAY = ["A","B","C","D","E"];
var mlength = ARRAY.length,
    DATES = [];

    DATES.length = mlength;
    DATES.fill([]);
    //DATES is now -> [ [], [], [], [], [], ]

【讨论】:

  • 需要注意的是,这取决于数组是否具有fill 方法,这是一个 ES6 特性,并非在所有浏览器中都实现(特别是在 IE 中没有实现)。请参阅this compatibility table 了解更多信息。
  • 这不会只创建一次子数组,并将其引用分配给 DATES 的每个槽吗?
  • @MikeMcCaughan - 它不工作。我将向您展示完整的代码。看到这个链接它不起作用。我将向您展示我的完整代码。请参阅第 111 行中的此链接 jsfiddle.net/xbk57jdo/5
  • @rjirji,我不知道你为什么要找我。我写这条评论是为了告诉你(和其他所有人)该代码很可能无法正常工作,因此它确实无法正常工作对我来说并不奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 2014-12-24
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
相关资源
最近更新 更多