You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组含有效值但array.length返回0?附代码与数据示例

问题分析与解决方案

嘿,我一眼就瞅出你代码里的关键问题啦!

核心错误:数组元素访问方式不对

你在循环里直接写了 data.data.imgId 和 data.data.imgString,但 data.data 是一个数组啊!数组本身根本没有这两个属性——你得访问数组里的第 q 个元素,也就是 data.data[q],才能拿到对应对象里的 imgId 和 imgString。

原来的代码里,每次push的其实是 {imgId: undefined, imgString: undefined},虽说按道理数组长度应该和 data.data.length 一致,但你说返回0,大概率是这个错误引发了隐性问题,或者你是在异步场景下执行的这段代码(比如 data.data 还没被赋值就跑了循环)。先把最明显的代码问题修正:

修正后的代码

for (var q = 0; q < data.data.length; q++) {
  // 重点:先拿到数组里当前循环的元素
  var currentImg = data.data[q];
  var test1 = { 
    imgId: currentImg.imgId, 
    imgString: currentImg.imgString 
  };
  vm.imgArr.push(test1);
}
console.log(vm.imgArr.length); // 现在应该和data.data的长度一致啦

额外优化小建议

  • 用 forEach 循环更简洁,还能避免索引写错的问题:
data.data.forEach(item => {
  vm.imgArr.push({
    imgId: item.imgId,
    imgString: item.imgString
  });
});
  • 如果是Vue场景,记得提前把 vm.imgArr 初始化为空数组(比如在Vue实例里声明 imgArr: []),不然push操作会无效哦。

内容的提问来源于stack exchange,提问作者code.cycling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:16:52