控制台输出不显示数组元素的数量。代码中无法访问的数组元素
Posted
技术标签:
【中文标题】控制台输出不显示数组元素的数量。代码中无法访问的数组元素【英文标题】:Console output does not show number of elements of array. Array Elements not accessible in code 【发布时间】:2019-01-19 21:49:21 【问题描述】:我在这方面浪费了几个小时,但无法找到这个问题的答案。
代码如下:
export const fetchZoneSlots = (name, startDate) => async dispatch =>
var zoneSchedule=[], promises=[], temp=[],i,j;
try
for(i=0;i<7;i++)
const response = await axios.post(
'http://localhost:3090/zoneslots',
name, date: startDate
);
promises.push(response);
startDate= moment(startDate,'YYYY-MM-DD').add(1,'day').format('YYYY-MM-DD');
axios.all(promises).then(function(results)
results.forEach(function(response)
temp.push(response.data);
);
);
console.log(temp);
dispatch( type: ZONE_CHANGE, payload: temp );
catch (e)
dispatch( type: ZONE_ERROR, payload: 'Zone information cannot be fetch' );
;
在上面的代码中,我以对象数组的形式获取数据并将这个数组推送到temp
变量中以创建一个矩阵(2D 数组)。现在我想转置这个矩阵。但是,控制台上没有temp[i]
或temp[i][j]
的输出。
换句话说,我无法访问数组的各个元素。但是,有一个temp
的输出,我在代码中有console.log
,如下图所示。
正如您在图像中看到的,控制台上没有显示元素的数量,它只显示Array []
而不是Array(7) [..]
。
但是,如果您注意到我在dispatch()
中将相同的变量(即temp
)作为值传递给了我的payload
。现在,当我控制台记录我的组件道具时,它会正确地将 Array(7) [ (14)[..], ... ]
显示为 zoneSchedule
属性的值。
所以,我想知道为什么我无法在给定的代码中访问/迭代数组,或者为什么控制台中没有显示元素的数量,即使它包含元素并且设置了长度属性。为什么相同的传递数组出现在其他对象属性上,但是当我将temp
分配给我的action creator
代码中的任何其他变量时,同样的事情不起作用。
我想在通过之前调换温度。
提前感谢您的帮助。
【问题讨论】:
您在“then”之外进行控制台输出。数据还没有。但是,当您在控制台日志中展开阵列时,数据已到达。当你输出一个指向对象的指针时,它的内容可能会改变。 【参考方案1】:将await
放在axios.all(...).then(...)
之前等待所有的承诺,然后再进行调度:
await axios.all(promises).then(function(results)
results.forEach(function(response)
temp.push(response.data);
);
return;
);
【讨论】:
以上是关于控制台输出不显示数组元素的数量。代码中无法访问的数组元素的主要内容,如果未能解决你的问题,请参考以下文章