使用javascript从JSON中获取2个不同的数组,数组中的top 4 Key和Value与top值一致

Get 2 Different arrays of top 4 Key and Value as per top values from JSON using javascript

本文关键字:top 数组 Value Key javascript 2个 获取 使用 JSON      更新时间:2023-09-26

假设我有一个JSON对象。

var JSONObj = "skills":[
            {
                "skill": "HTML",
                "rate": "4"
            },
            {
                "skill": "JS",
                "rate": "5"
            },
            {
                "skill": "jQuery",
                "rate": "8"
            },
            {
                "skill": "Angular 2",
                "rate": "1"
            },
            {
                "skill": "XML",
                "rate": "3"
            },
            {
                "skill": "CSS",
                "rate": "10"
            }
        ]

我想在Javascript中为TopRates和TopSkills生成两个不同的数组。例如,var TopSkills = ["CSS", "jQuery", "JS", "HTML"]; var TopRates = [10, 8, 5, 4]

您可以使用reduce()返回技能和费率数组,然后使用slice()返回前4名。

var JSONObj = {
  "skills": [{
    "skill": "HTML",
    "rate": "4"
  }, {
    "skill": "JS",
    "rate": "5"
  }, {
    "skill": "jQuery",
    "rate": "8"
  }, {
    "skill": "Angular 2",
    "rate": "1"
  }, {
    "skill": "XML",
    "rate": "3"
  }, {
    "skill": "CSS",
    "rate": "10"
  }]
}
var r = JSONObj.skills.sort((a, b) => b.rate - a.rate).reduce(function(r, e) {
  r.skills = (r.skills || []).concat(e.skill);
  r.rates = (r.rates || []).concat(e.rate);
  return r;
}, {})
var TopSkills = r.skills.slice(0, 4);
var TopRates = r.rates.slice(0, 4);
console.log(TopSkills)
console.log(TopRates)

您可以先按速率对数组进行排序,然后用技能和速率进行映射:

var sortedBySkill = JSONObj.skills.sort(function(a, b) {
    return b.rate - a.rate;
});
console.log(sortedBySkill.map(function(a) {
    return a.skill;
}).slice(0,4));
console.log(sortedBySkill.map(function(a) {
    return a.rate;
}).slice(0,4));

这是小提琴。希望能有所帮助。

甚至可以轻松使用forEach

var topSkills = [];
var topRates = [];
JSONObj.skills.sort((a, b) => b.rate - a.rate).forEach(item => {
  topSkills.push(item.skill);
  topRates.push(item.rate);
});
var JSONObj = [{"skill":"HTML","rate":"4"},{"skill":"JS","rate":"5"},{"skill":"jQuery","rate":"8"},{"skill":"Angular 2","rate":"1"},{"skill":"XML","rate":"3"},{"skill":"CSS","rate":"10"}]
JSONObj.sort(function(a,b){return  parseFloat(a.rate) - parseFloat(b.rate)});
JSONObj.reverse();
var TopSkills=[];
var TopRates=[];
for(var i=0;i<JSONObj.length;i++){
  TopRates.push(JSONObj[i].rate);
  TopSkills.push(JSONObj[i].skill);
}

检查演示