【问题标题】:Array[key].push Is Not Defined in JavaScript [closed]Array[key].push 未在 JavaScript 中定义 [关闭]
【发布时间】:2016-09-20 21:32:37
【问题描述】:

当尝试将项目推送到 javascripts 中的数组时会出错,以下伪代码说明了正在发生的事情:

var data = new Array();
for(...) {
     data[key].push(item[i]);
}

显示以下错误:

   Cannot read property 'push' of undefined

谢谢

【问题讨论】:

  • 因为data 是数组。除非data[key] 拥有一个数组,否则您将无法定义。考虑 var data = [1,2,3,4,5];key 是第一个索引 (1)。您正在尝试对整数使用数组方法,这显然行不通。
  • @SterlingArcher 已经给你答案了。
  • 您可以从教程和文档中学习有关数组的基础知识:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…eloquentjavascript.net/04_data.html也许你想要data[key] = item[i]
  • 您是否期望 data[key] 已经是一个数组?
  • @MohanadKaleia 是的,你必须这样做。

标签: javascript arrays


【解决方案1】:

如果需要二维数组,则必须将外部数组的每个元素初始化为数组。

// Have to check every array item, if it's not an array already, make it so
for(...) {
    if (!data[key]) {
        data[key] = [];
    }
    data[key].push(item[i]);
}

如果您知道需要的内部数组的数量,您总是可以执行以下操作:

var data = [[],[],[],[],[],[]];

在您的示例中,由于它们的变量名是关键,我假设您实际上想要一个数组对象。如果您提前知道密钥,则可以使用以下文字。

var data = {
  myKey1: [],
  myKey2: []
}

【讨论】:

  • 您定义了一个 data[key] 数组,假设您知道密钥,但在我的情况下,密钥是在运行时定义的,在 for 循环中
  • 但是我不知道前面的关键,我不知道我需要多少个,这是我的问题,我需要寻找一种动态的方式来定义二维数组,谢谢,
  • 那么第一个sn-p代码就是你要找的
  • 我会试试的..谢谢
  • 好的,但我必须提前准备好所有的钥匙,但我成功了,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2019-03-22
  • 2017-04-25
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
相关资源
最近更新 更多