我需要在javascript中查看一个对象数组但是,forEach循环没有,过滤器函数会识别数组元素。数组长度显示为0.当我在Chrome中记录数组变量时,它确实包含了我需要经历的元素,并且数组长度显示为正确的数组(6)。
我是如何循环使用这些Drupal.Ajax元素的?
答案 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 图标,提醒您这一事实。
这一切都取决于你的代码,因为你没有共享任何代码很难推进任何解决方案。但是这种方法是确保在尝试任何操作之前已经填充了数组的值。