无法访问javascript

时间:2018-03-14 18:32:52

标签: javascript arrays

我需要在javascript中查看一个对象数组但是,forEach循环没有,过滤器函数会识别数组元素。数组长度显示为0.当我在Chrome中记录数组变量时,它确实包含了我需要经历的元素,并且数组长度显示为正确的数组(6)。

Console logging in Chrome

我是如何循环使用这些Drupal.Ajax元素的?

2 个答案:

答案 0 :(得分:0)

尝试使用Promise(如果使用ES6 +,则使用async / wait)等待元素填充数组。这样你就不会遍历目标数组,直到它有一个元素。

let targetArray = [];

let p = new Promise(resolve => {

  // get elements from a file or over the network
  // or the simplest is to just set a small timeout

  resolve(targetArray);
});

p.then(arr => {
  if (arr.length > 0) {

    // loop over arr

  }
});

对于较旧的vanilla JS,也可以使用回调。

答案 1 :(得分:0)

问题

正如评论中已经回答的那样,当您尝试对其进行操作时,数组未填充,请参阅以下示例:

const foo = []
console.log(foo)
foo.push(1)
console.log(foo)

// output
[]
  0: 1
  length: 1
  __proto__: Array(0)

[1]
   0: 1
   length: 1
   __proto__: Array(0)

注意第一行的差异,其中chrome输出数组的实际值:

[]
[1]

但是,一旦展开输出,您就会看到Chrome评估值并添加一个 i 图标,提醒您这一事实。

chrome console

解决方案

这一切都取决于你的代码,因为你没有共享任何代码很难推进任何解决方案。但是这种方法是确保在尝试任何操作之前已经填充了数组的值。