跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 通过 id 整理数据: Array+json 记录小案例 [找人问了怎么格式化]
未分類
29 2 月 2020

通过 id 整理数据: Array+json 记录小案例 [找人问了怎么格式化]

通过 id 整理数据: Array+json 记录小案例 [找人问了怎么格式化]

資深大佬 : Aitmo 53

《菜鸟小前端》  举个栗子: /* 原始数据:/ var arr = [{"id": 1,"user": {"name": "张三"}},{"id": 1,"user": {"name": "李四"}}]; / 转换后 :*/ var arr1 = [{"id": 1,"data": [{"name": "张三"}, {"name": "李四"}]}]  // 处理数组中的 json 数据,根据相同 id 将一层 json 数据中的二层 json 集合到一起 function uniqueArray(arr, type) { //形参 1 数组  形参 2 判断的数据类型   var map = {}, //承载判断的集合容器     dest = [], //自定义的数组     keys = []; //动态的 key 值   for (var i = 0; i < arr.length; i++) {     var ai = arr[i];     if (!map[ai.id]) { //循环的条件       /*动态获取 json 的 key 值*/       for (var key in ai) {         keys.push(key)       }       keys = [...new Set(keys)]; //将 keys 数组去重 [因为循环了很多次]        let obj = {}; //obj===ai 添加上承载字段       keys.map((item, id) => { //动态 key 值操作 [同步]          if (typeof ai[keys[id]] == type) { //判断数据类型是不是自己要的,例如 object           obj.data = [ai[keys[id]]] //判断出的数据放置在 obj 添加的承载字段         } else {           obj[keys[id]] = ai[keys[id]]; //将原 ai 的值赋值给重新定义的 obj         }       })       dest.push(obj); //将 ai 处理为 obj 放置自定义的数组中       /*       已知 json 的 key 值 [被替代]        {           id: ai.id,           createdAt: ai.createdAt,           is_root: ai.is_root,           name: ai.name,           user: [ai.user]       }*/       map[ai.id] = ai; //通过要处理数据的 id 赋值 map 多重集合     } else {       // 如果遇到相同的 id       for (var j = 0; j < dest.length; j++) { //通过遍历自定义的新数组         var dj = dest[j];         if (dj.id == ai.id) { //找到与相同 id 的字段数据           keys.map((item, id) => { //动态 key 值操作 [同步]              if (typeof ai[keys[id]] == type) { //判断数据类型是不是自己要的,例如 object               dj.data.push(ai[keys[id]]); //将判断的数据继续放置相同 id 的字段中的自定义的数组中             }           })           /* 已知要放置的数据 dj.data.push(ai.user); [被替代] */           break;         }       }     }   }   return dest; }    

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具