按降序格式化JSON

问题描述 投票:0回答:2

在下面的json文件中,我想按降序排序docs字段中的内容。有两个街区。数据是动态的,意味着可以有多个块 - 它可以是5,它可以是docs中的10个这样的块。

{
"Scoring":1.68466776,
"_text_":[
],
"id":"health_analytics.pdf",
"jac_Score":0.07370184254606366,
"matchScore":0.65,
"scaledTf_idf":0.0,
"searchTerm":[
"Machine learning",
"Deep learning",
"R",
"Python",
"Sas"
],
"sortingScore":59.78
}

和,

{
    "Scoring":2.029842275,
    "_text_":[
    ],
    "id":"customer_channel_analytics_bang.pdf",
    "jac_Score":0.09041591320072333,
    "matchScore":0.6875,
    "scaledTf_idf":0.0,
    "searchTerm":[
    "Machine learning",
    "Deep learning",
    "Sas",
    "R"
    ],
    "sortingScore":44.03
    },

我想使用Sortingscoring对其进行排序,这是docs中的一个字段。应该对文档中的整个块(在这种情况下有两个)进行排序。所以在排序之后,最终的json应该如下所示。我已经提到了几个stackoverflow链接sort json object in javascript但无法得到它。

{
"statusCode":200,
"body":{
"docs":[
{
"Scoring":2.029842275,
"_text_":[
],
"id":"customer_channel_analytics_bang.pdf",
"jac_Score":0.09041591320072333,
"matchScore":0.6875,
"scaledTf_idf":0.0,
"searchTerm":[
"Machine learning",
"Deep learning",
"Sas",
"R"
],
"sortingScore":44.03
},
{
"Scoring":1.68466776,
"_text_":[
],
"id":"health_analytics.pdf",
"jac_Score":0.07370184254606366,
"matchScore":0.65,
"scaledTf_idf":0.0,
"searchTerm":[
"Machine learning",
"Deep learning",
"R",
"Python",
"Sas"
],
"sortingScore":59.78
}
]
}
}
javascript json sorting
2个回答
0
投票
var json = `{
  "statusCode": 200,
  "body": {
    "docs": [
      {
        "Scoring": 2.029842275,
        "_text_": [],
        "id": "customer_channel_analytics_bang.pdf",
        "jac_Score": 0.09041591320072333,
        "matchScore": 0.6875,
        "scaledTf_idf": 0,
        "searchTerm": [
          "Machine learning",
          "Deep learning",
          "Sas",
          "R"
        ],
        "sortingScore": 64.03
      },
      {
        "Scoring": 1.68466776,
        "_text_": [],
        "id": "health_analytics.pdf",
        "jac_Score": 0.07370184254606366,
        "matchScore": 0.65,
        "scaledTf_idf": 0,
        "searchTerm": [
          "Machine learning",
          "Deep learning",
          "R",
          "Python",
          "Sas"
        ],
        "sortingScore": 59.78
      },
      {
        "Scoring": 3.029842275,
        "_text_": [],
        "id": "sex_anal_lyctics.pdf",
        "jac_Score": 0.09041591320072333,
        "matchScore": 0.6875,
        "scaledTf_idf": 0,
        "searchTerm": [
          "Machine learning",
          "Deep learning",
          "Sas",
          "R"
        ],
        "sortingScore": 14.03
      }
    ]
  }
}`;



var obj = JSON.parse(json);

for(var i = 0; i < obj.body.docs.length; i++){
  obj.body.docs.forEach(function(value,index){
    var counter = index;
    var temp;
    if(index < obj.body.docs.length-1){
      if(obj.body.docs[index].sortingScore > obj.body.docs[counter+1].sortingScore){
          temp = obj.body.docs[index];
          obj.body.docs[index] = obj.body.docs[counter+1];
          obj.body.docs[counter+1] = temp;
      }
    }
  });
}

console.log(obj.body.docs);

//那么这是一个顺序的我不建议,如果数据很大,只需将比较更改为>或<以适合您的排序首选项

View In Fiddle


0
投票

试试这个吧

var a = {
      "Scoring":2.029842275,
      "_text_":[
      ],
      "id":"customer_channel_analytics_bang.pdf",
      "jac_Score":0.09041591320072333,
      "matchScore":0.6875,
      "scaledTf_idf":0.0,
      "searchTerm":[
      "Machine learning",
      "Deep learning",
      "Sas",
      "R"
      ],
      "sortingScore":44.03
  }
var b = {
      "Scoring":1.68466776,
      "_text_":[
      ],
      "id":"health_analytics.pdf",
      "jac_Score":0.07370184254606366,
      "matchScore":0.65,
      "scaledTf_idf":0.0,
      "searchTerm":[
      "Machine learning",
      "Deep learning",
      "R",
      "Python",
      "Sas"
      ],
      "sortingScore":59.78
}
var c = [ {a},{b}]
console.log(a.id)
console.log(b.id)
console.log(c.sort(function(a, b){
    return a - b;
}));
© www.soinside.com 2019 - 2024. All rights reserved.