目录

后端返回数组类型在前端ajax接收到的是Object类型,导致.length获取长度失败

目录

后端返回数组类型在前端ajax接收到的是Object类型,导致.length获取长度失败

问题:

后端返回数组类型在前端ajax接收到的是

Object

类型,导致.length获取长度失败。奇怪的是我本地返回类型是Array没任何问题,test环境就成

Object

本地环境:

https://i-blog.csdnimg.cn/blog_migrate/54a2aa741e778482573213cc272ccb83.png

test环境:

https://i-blog.csdnimg.cn/blog_migrate/ef8ba56ef17d4462e2bffbf728eedd30.png

解决办法

:将

Object

转成Array

data.favorites_list = objOfValueToArr(data.favorites_list);
function objOfValueToArr(object) {
   if(!isArrayFn(object)){
      var arr = [];
      var i = 0;
      for (var item in object) {
         arr[i] = object[item];
         i++;
      }
      return arr;
   }else{
      return object;
   }
}
function isArrayFn(value){
   if (typeof Array.isArray === "function") {
      return Array.isArray(value);
   }else{
      return Object.prototype.toString.call(value) === "[object Array]";
   }
}

总结 :遇到问题较长时间无解决思路时,要么清空大脑换个思路,要么就及时请教。如解决本问题时刚开时就一味觉得在后台数据哪的格式弄错了,一头扎进后端代码无法自拔。