Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie die Optimierung der JSON-Datengruppierung in Javascript

亚连
Freigeben: 2018-06-19 11:45:42
Original
1875 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Optimierungspraxis der JSON-Datengruppierung in Javascript vor. Der Artikel fasst auch die Grundlagen des JS-Betriebs von JSON zusammen. Freunde, die es benötigen, können darauf zurückgreifen.

Es gibt eine Menge Daten Ich muss es nach Zeit sortieren, damit die Front-End-Ansicht

[
 {"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"}
]
Nach dem Login kopieren

in die folgende

[
 {
 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'
  }
 ]
 }
]
Nach dem Login kopieren

1 umgewandelt werden muss viele Netzwerke

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
  }
  }
 }
 }
Nach dem Login kopieren

Betriebseffizienz: Es dauert etwa 3 ms, 1000 Mal zu durchlaufen. Ich hatte immer das Gefühl, dass es nicht elegant ist und die Funktionen von ES5 nicht nutzt, also habe ich mich für eine Optimierung entschieden es selbst!

2. Verwenden Sie ES5-Funktionen

Ersetzen Sie for durch forEach and 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
  })
 }
 })
Nach dem Login kopieren

Die Leistungsoptimierung beträgt 50 %, etwa 1,5 MS!

3. Praxis zur Leistungsoptimierung

Da die Daten in meinem Array der Reihe nach angeordnet sind und es keine Duplikate gibt, kann ich darüber nachdenken, sie zu entfernen 1. Die Effizienz der zweiten Schleife

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][&#39;data&#39;].push(item)
  } else {
  nList.push({
   date: item.date,
   data: [item]
  })
  _nkey ++
  }
 }
 })
Nach dem Login kopieren

wird noch einmal um 50 % optimiert, ca. 1 ms!

PS: JS-Operation JSON-Zusammenfassung

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das völlig unabhängig ist Sprachspezifischer Text Format, ideal für den Datenaustausch. Gleichzeitig ist JSON ein natives JavaScript-Format, was bedeutet, dass für die Verarbeitung von JSON-Daten in JavaScript keine spezielle API oder ein spezielles Toolkit erforderlich ist.

Dieser Artikel fasst hauptsächlich die Grundlagen des JS-Betriebs von JSON zusammen.

In JSON gibt es zwei Strukturen: Objekte und Arrays.

1. Ein Objekt beginnt mit „{“ (linke Klammer) und endet mit „}“ (rechte Klammer). Auf jeden „Namen“ folgt ein „:“ (Doppelpunkt); „Name/Wert“-Paare werden durch „“, (Komma) getrennt. Der Name wird in Anführungszeichen gesetzt; der Wert muss in Klammern stehen, wenn es sich um eine Zeichenfolge handelt, nicht jedoch, wenn es sich um einen numerischen Wert handelt. Zum Beispiel:

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

2. Ein Array ist eine geordnete Sammlung von Werten. Ein Array beginnt mit „[“ (linke Klammer) und endet mit „]“ (rechte Klammer). Verwenden Sie "," (Komma), um Werte zu trennen.

Zum Beispiel:

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

Um JSON-Daten bequem verarbeiten zu können, stellt JSON das Paket json.js bereit, Download-Adresse: http://www.json.org/json.js

Im Datenübertragungsprozess wird JSON in Form von Text, also einer Zeichenfolge, übergeben, und JS arbeitet mit JSON-Objekten, sodass die gegenseitige Konvertierung zwischen JSON-Objekten und JSON-Strings der Schlüssel ist. Zum Beispiel:

JSON-Zeichenfolge:

  var str1 = &#39;{ "name": "cxh", "sex": "man" }&#39;;
Nach dem Login kopieren

JSON-Objekt:

 var str2 = { "name": "cxh", "sex": "man" };
Nach dem Login kopieren

1. Konvertieren Sie die JSON-Zeichenfolge in das JSON-Objekt

Um den oben genannten str1 zu verwenden, müssen Sie Folgendes verwenden, um ihn in ein JSON-Objekt zu konvertieren:

  //由JSON字符串转换为JSON对象
var obj = eval(&#39;(&#39; + str + &#39;)&#39;);
Nach dem Login kopieren

oder

var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
Nach dem Login kopieren

oder

  var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
Nach dem Login kopieren

Dann Sie kann so lesen:

  Alert(obj.name);
  Alert(obj.sex);
Nach dem Login kopieren

Besondere Aufmerksamkeit: Wenn obj ursprünglich ein JSON-Objekt ist, ist es nach der Konvertierung mit der Funktion eval() (auch wenn es mehrmals konvertiert wird) immer noch ein JSON-Objekt , aber nachdem die Funktion parseJSON() zur Verarbeitung verwendet wurde, wird dies der Fall sein Im Zweifel (löst eine Syntaxausnahme aus).

2. Sie können toJSONString() oder die globale Methode JSON.stringify() verwenden, um das JSON-Objekt in einen JSON-String zu konvertieren.

Zum Beispiel:

var last=obj.toJSONString(); //将JSON对象转化为JSON字符
Nach dem Login kopieren

oder

  var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
  alert(last);
Nach dem Login kopieren

Hinweis:

Oben Unter den vielen Methoden stammen viele andere Methoden aus dem Paket json.js, außer dass die Funktion eval() mit js geliefert wird. Die neue Version von JSON hat die API geändert und sowohl die Methoden JSON.stringify() als auch JSON.parse() in die integrierten Objekte von Javascript eingefügt. Ersteres wird zu Object.toJSONString() und letzteres wird zu String parseJSON(. ). Wenn Sie die Meldung erhalten, dass die Methoden toJSONString() und parseJSON() nicht gefunden werden können, bedeutet dies, dass die Version Ihres JSON-Pakets zu niedrig ist.

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

Informationen zur Verwendung von bootstrap-table.js zur Implementierung der erweiterten Paging-Symbolleistenfunktion

Informationen zu substring() und substr( ) (ausführliches Tutorial)

So ermitteln Sie, ob ein Variablenname in einem Array in JavaScript vorhanden ist

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Optimierung der JSON-Datengruppierung in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!