使用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
假设我有一个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);
}
检查演示
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 使用javascript从JSON中获取2个不同的数组,数组中的top 4 Key和Value与top值一致
- 使用lodash将对象数组排序为Top N,其中N +1为“other "”