亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Javascript中JSON數據分組優化實踐及JS操作JSON總結

2019-11-19 14:40:15
字體:
來源:轉載
供稿:網友

現有一堆數據,我需要按時間進行分組,以便前端視圖呈現

[ {"date":"2017-12-22","start_time":"10:00:00","end_time":"10:00:00","status":"Performance Time"}, {"date":"2017-12-22","start_time":"10:40:00","end_time":"10:40:00","status":"Performance Time"}, {"date":"2017-12-23","start_time":"10:00:00","end_time":"10:00:00","status":"Performance Time"}, {"date":"2017-12-23","start_time":"10:40:00","end_time":"10:40:00","status":"Performance Time"}]

需轉化為如下

[ { date: '2017-12-22', data: [  {  date: '2017-12-22',  start_time: '10:00:00',  end_time: '10:00:00',  status: 'Performance Time'  },  {  date: '2017-12-22',  start_time: '10:40:00',  end_time: '10:40:00',  status: 'Performance Time'  } ] }, { date: '2017-12-23', data: [  {  date: '2017-12-23',  start_time: '10:00:00',  end_time: '10:00:00',  status: 'Performance Time'  },  {  date: '2017-12-23',  start_time: '10:40:00',  end_time: '10:40:00',  status: 'Performance Time'  } ] }]

1.原始方法,網絡一大堆

var map = {}, nList = [] //遍歷原始數組 for (var i = 0; i < arr.length; i++) { var item = arr[i] //如果map沒有則在新nList中添加 if (!map[item.date]) {  nList.push({  date: item.date,  data: [item]  })  map[item.date] = item } else {  //遍歷nList  for (var j = 0; j < nList.length; j++) {  var nItem = nList[j]、  //如查找到date符合則添加  if (nItem.date == item.date) {   nItem.data.push(item)   //跳出循環   break  }  } } }

運行效率:遍歷1000個約3ms,總覺得不優雅,而且沒用到ES5的特性,于是決定自己優化一下!

2.使用ES5特性

將for替換為forEach和every

let map = {}, nList = [] arr.forEach((item) => { if (!map[item.date]) {  nList.push({  date: item.date,  data: [item]  })  map[item.date] = item } else {  //因為forEach不支持break,所以使用every實現  nList.every((nItem) => {  if (nItem.date === item.date) {   nItem.data.push(item)   return false  }  return true  }) } })

性能優化50%,約1.5ms!

3.性能優化實踐

因為我的數組中的date是按 順序排列 ,而且沒有重復,這樣可以考慮 去除第二個循環

let map = {}, nList = [] //設置初始key為0 let _nkey = 0 arr.forEach((item, index) => { if (index === 0) {  nList.push({  date: item.date,  data: [item]  }) } else {  let oItem = arr[index - 1]  //和前一個date一致則在當前添加,否則添加至nList  if (item.date === oItem.date) {  nList[_nkey]['data'].push(item)  } else {  nList.push({   date: item.date,   data: [item]  })  _nkey ++  } } })

效率再次優化50%,約1ms!

PS:JS操作JSON總結

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用完全獨立于語言的文本格式,是理想的數據交換格式。同時,JSON是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON數據不須要任何特殊的 API 或工具包。

    本文主要是對JS操作JSON的要領做下總結。

    在JSON中,有兩種結構:對象和數組。

    1. 一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值' 對”之間運用 “,”(逗號)分隔。 名稱用引號括起來;值如果是字符串則必須用括號,數值型則不須要。例如: 

var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

    2. 數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間運用 “,”(逗號)分隔。

    例如:

  var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

    為了方便地處理JSON數據,JSON提供了json.js包,下載地址:http://www.json.org/json.js

    在數據傳輸流程中,json是以文本,即字符串的形式傳遞的,而JS操作的是JSON對象,所以,JSON對象和JSON字符串之間的相互轉換是關鍵。例如:

    JSON字符串:

  var str1 = '{ "name": "cxh", "sex": "man" }';

    JSON對象:   

 var str2 = { "name": "cxh", "sex": "man" };

    一、JSON字符串轉換為JSON對象

    要運用上面的str1,必須運用下面的要領先轉化為JSON對象:

  //由JSON字符串轉換為JSON對象var obj = eval('(' + str + ')');

或者  

var obj = str.parseJSON(); //由JSON字符串轉換為JSON對象

    或者 

  var obj = JSON.parse(str); //由JSON字符串轉換為JSON對象

    然后,就可以這樣讀取:

  Alert(obj.name);  Alert(obj.sex);

    特別留心:如果obj本來就是一個JSON對象,那么運用 eval()函數轉換后(哪怕是多次轉換)還是JSON對象,但是運用 parseJSON()函數處理后會有疑問(拋出語法異常)。

    二、可以運用 toJSONString()或者全局要領 JSON.stringify()將JSON對象轉化為JSON字符串。

    例如:   

var last=obj.toJSONString(); //將JSON對象轉化為JSON字符

    或者

  var last=JSON.stringify(obj); //將JSON對象轉化為JSON字符  alert(last);

    留心:

    上面的多個要領中,除了eval()函數是js自帶的之外,其他的多個要領都來自json.js包。新版本的 JSON 修改了 API,將 JSON.stringify() 和 JSON.parse() 兩個要領都注入到了 Javascript 的內建對象里面,前者變成了 Object.toJSONString(),而后者變成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要領,則說明您的json包版本太低。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女999| 成人精品aaaa网站| 亚洲国产精品女人久久久| 91精品久久久久久| 日韩电影第一页| 亚洲欧美成人在线| 国产盗摄xxxx视频xxx69| 精品国产欧美成人夜夜嗨| 亚洲人成电影在线播放| 国产精品久久久久久久久久| 欧美高清在线播放| 久久久亚洲影院你懂的| 日本a级片电影一区二区| 欧美一性一乱一交一视频| 亚洲国产一区二区三区在线观看| 日韩在线视频二区| 成人性生交大片免费看视频直播| 国产91精品久久久久| 日韩欧美成人区| 国产成人拍精品视频午夜网站| 国产成人+综合亚洲+天堂| 亚洲第一页自拍| 亚洲第一区在线| 97色在线视频观看| 91干在线观看| 欧美日韩在线第一页| 26uuu另类亚洲欧美日本老年| 粉嫩av一区二区三区免费野| 九九久久久久99精品| 日韩亚洲精品视频| 欧美成人sm免费视频| 亚洲人成电影在线观看天堂色| 欧美成人剧情片在线观看| 国产精品视频久久久| 久久综合国产精品台湾中文娱乐网| 精品国产一区二区三区四区在线观看| 国产福利视频一区二区| 成人观看高清在线观看免费| 久久精品视频99| 日韩中文字幕精品| 成人精品一区二区三区电影黑人| 久久6免费高清热精品| 久久精品亚洲国产| 精品无人国产偷自产在线| 欧美性猛交xxxx偷拍洗澡| 亚洲欧洲激情在线| 久久综合伊人77777| 狠狠久久亚洲欧美专区| 97在线精品国自产拍中文| 欧美性感美女h网站在线观看免费| 欧美精品videos| 69视频在线播放| 欧美性生交xxxxx久久久| 欧美一区二粉嫩精品国产一线天| 国产精品久在线观看| 亚洲免费视频在线观看| 日韩欧美在线视频观看| 久久琪琪电影院| 国产精品伦子伦免费视频| 欧美在线一区二区视频| 国产精品久久久久国产a级| 欧美激情精品久久久| 亚洲一区二区三区视频播放| 久久成人亚洲精品| 日韩久久精品成人| 国产精自产拍久久久久久| 精品视频9999| 成人久久久久久| 午夜精品蜜臀一区二区三区免费| 一区二区三区精品99久久| 日韩极品精品视频免费观看| 久久噜噜噜精品国产亚洲综合| 一个色综合导航| 国产精品视频免费在线| 最近2019中文字幕在线高清| 日韩在线欧美在线国产在线| 欧美性猛交xxxx乱大交极品| 2020欧美日韩在线视频| 国产精品福利在线| 国产精品一区二区三区久久久| 亚洲国产精品久久久| 亚洲肉体裸体xxxx137| 国产精品一区久久| 色综合久久精品亚洲国产| 97成人精品视频在线观看| 亚洲一区二区三区在线免费观看| 91精品久久久久久久久久久久久| 久久久亚洲国产天美传媒修理工| 亚洲男人天堂视频| 国产综合在线观看视频| 成人国产精品av| 精品一区二区亚洲| 国产精自产拍久久久久久| 黄色91在线观看| 日韩精品在线视频美女| 亚洲一区二区三区视频| 国产午夜精品免费一区二区三区| 久久大大胆人体| 91黑丝在线观看| 在线不卡国产精品| 在线观看成人黄色| 日本不卡视频在线播放| 欧美激情第一页xxx| 成人福利网站在线观看11| 亚洲欧美日韩一区二区在线| 国产精品一区二区久久国产| 欧美视频国产精品| 日韩小视频在线观看| 日韩在线激情视频| 日韩欧美一区二区在线| 国产主播精品在线| 日韩av三级在线观看| 亚洲成年人影院在线| 2018国产精品视频| 亚洲精品资源美女情侣酒店| 2018国产精品视频| 日韩在线免费视频观看| 欧美激情精品久久久久久| 日韩av电影在线网| 精品国产成人av| 亚洲精品资源美女情侣酒店| 国产精品视频播放| 国产精品视频免费在线观看| 三级精品视频久久久久| 日韩精品中文字幕视频在线| 国产91色在线|免| 亚洲激情小视频| 国产综合在线视频| 欧美精品一二区| www.国产精品一二区| 国产精品狼人色视频一区| 欧美高清性猛交| 精品国产一区久久久| 欧美又大粗又爽又黄大片视频| www.99久久热国产日韩欧美.com| 91视频8mav| 国产精品美女av| 国产精品一区二区三区在线播放| 国产婷婷色综合av蜜臀av| 一道本无吗dⅴd在线播放一区| 亚洲成色www8888| 久久人人爽国产| 国产精品视频永久免费播放| 亚洲一区亚洲二区| 在线午夜精品自拍| 456国产精品| 欧美有码在线视频| 欧美裸体xxxx极品少妇| 97视频在线观看成人| 久久精品中文字幕电影| 91久久精品国产| 亚洲国产中文字幕在线观看| 亚洲一区二区三区xxx视频| 亚洲男人天堂网| 97精品视频在线观看| 国产精品女视频| 久久久久成人精品| 国产丝袜视频一区| 欧美激情乱人伦一区| 欧美日韩国产综合视频在线观看中文| 亚洲欧美另类在线观看| 2019中文在线观看| 久久久久久免费精品| 91国内揄拍国内精品对白|