91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Javascript中JSON數據分組優化的示例分析

發布時間:2021-08-26 11:15:53 來源:億速云 閱讀:109 作者:小新 欄目:web開發

小編給大家分享一下Javascript中JSON數據分組優化的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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

[
 {"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);

以上是“Javascript中JSON數據分組優化的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开封市| 大荔县| 沙田区| 咸丰县| 东乡族自治县| 民乐县| 彰化县| 云和县| 通化市| 牟定县| 白城市| 娄烦县| 江永县| 怀来县| 翁源县| 广灵县| 乐陵市| 富民县| 玛沁县| 台山市| 大英县| 报价| 青浦区| 中方县| 潞西市| 高雄市| 昭苏县| 德令哈市| 罗甸县| 南部县| 富民县| 广昌县| 仙游县| 濉溪县| 沽源县| 临夏县| 南澳县| 女性| 彭州市| 新巴尔虎右旗| 正镶白旗|