簡體   English   中英

重新排列json對象中的數組

[英]Reorder arrays within json object

var data = {
 chart : 'rank',
 labels: [
      {
       0: 'First Choice'
       1: 'Second Choice',   
       2: 'Third Choice',
       3: 'Fourth Choice',
       4: 'Fifth Choice'
      }
 ],
rows: [
     {
      0: 2,
      1: 8,
      2: 1,
      3: 30
      4: 4
     }
      ]

   }

有沒有一種方法可以對結果進行重新排序,以便將行從高到低重新排序,並且將相應的標簽也重新排序,如下所示:

var data = {
 chart : 'rank',
 labels: [
      {
       0: 'Fourth Choice'
       1: 'Second Choice',   
       2: 'Fifth Choice',
       3: 'First Choice',
       4: 'Third Choice'
      }
 ],
rows: [
     {
      0: 30,
      1: 8,
      2: 4,
      3: 2
      4: 1
     }
      ]

   }

到目前為止,我已經設法使用以下命令對行數組進行重新排序,但是在標簽方面卻卡住了?

rows = rows.sort(function(a, b){return b-a});

將對象值放入數組中並進行排序。 排序后,根據排序后的數組更新實際對象。

 var data = { chart: 'rank', labels: [{ 0: 'First Choice', 1: 'Second Choice', 2: 'Third Choice', 3: 'Fourth Choice', 4: 'Fifth Choice' }], rows: [{ 0: 2, 1: 8, 2: 1, 3: 30, 4: 4 }] }; // get object property name array Object.keys(data.labels[0]) // generate array with object values .map(function(k) { return [data.labels[0][k], data.rows[0][k]] // sort the array based on rows value in array }).sort(function(a, b) { return b[1] - a[1]; // iterate and update real object }).forEach(function(v, i) { data.labels[0][i] = v[0]; data.rows[0][i] = v[1]; }); console.log(data); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM