【问题标题】:Javascript array showing not an array Error [duplicate]Javascript数组显示不是数组错误[重复]
【发布时间】:2019-02-06 02:26:06
【问题描述】:

我在另一个对象中有一个对象数组。当我用

迭代这个数组时
t.schedules.forEach(function(item) {
    console.log(item[index]);

});

它显示错误 Uncaught TypeError: t.schedules.forEach is not a function。

但我可以使用 t.schedules[index];

【问题讨论】:

  • 请发布更多代码。 t 相对于您的 forEach 在哪里填充?
  • schedules 是什么,它不是一个数组(或者你使用的是一个非常旧的 IE)。
  • t.schedules 可能不是数组
  • @Neha 如果您创建像var a = {1: 'Hello'}; 这样的对象,那么它还将返回Helloa[1]。但是aobject 而不是array
  • 记录 t.schedules 而不是 t.schedules[0] 所以我们可以看到它的结构。

标签: javascript jquery


【解决方案1】:

试试这样。如果t.schedulesobject,那么Object.values(t.schedules) 将从object 返回array of values。然后你可以使用forEach

if (typeof t.schedules == "object") {
    t.schedules = Object.values(t.schedules);
}
t.schedules.forEach(function(item) {
    console.log(item[index]);
});

【讨论】:

  • 谢谢! typeof(t.schedules) 返回对象
【解决方案2】:

如果您在填充数组之前尝试迭代,这种事情经常发生。记录的对象看起来像一个数据库条目,由“created_at”、“updated_at”等键判断,所以我猜你是从数据库中检索数组?如果是这样,请在迭代之前检查您是否正在等待响应。

【讨论】:

  • yes 数组是从 ajax 响应中填充的
  • 那是评论而不是答案
  • 答案不应该是推测性的。你确定这个答案是正确的吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-10
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
相关资源
最近更新 更多