如何在JavaScript中获取对象对象中的前5名和最低5名值?
给定一个如下所示的对象:如何在JavaScript中获取对象对象中的前5名和最低5名值?,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,给定一个如下所示的对象: let abilities = { "technical": { "Corners": 12, "Crossing": 12, "Dribbling": 20, "Finishing": 14, "First Touch": 17, "Free Kick": 13, "Heading": 7, "Long Shots": 11,
let abilities = {
"technical": {
"Corners": 12,
"Crossing": 12,
"Dribbling": 20,
"Finishing": 14,
"First Touch": 17,
"Free Kick": 13,
"Heading": 7,
"Long Shots": 11,
"Long Throws": 5,
"Marking": 3,
"Passing": 15,
"Penalty Taking": 19,
"Tackling": 4,
"Technique": 18
},
"mental": {
"Aggression": 8,
"Anticipation": 12,
"Bravery": 17,
"Composure": 15,
"Concentration": 13,
"Decisions": 16,
"Determination": 15,
"Flair": 18,
"Leadership": 6,
"Off The Ball": 14,
"Positioning": 7,
"Teamwork": 9,
"Vision": 16,
"Work Rate": 12
},
"physical": {
"Acceleration": 17,
"Agility": 20,
"Balance": 16,
"Jumping Reach": 8,
"Natural Fitness": 16,
"Pace": 16,
"Stamina": 17,
"Strength": 11
}
}
我想得到5个最高值和5个最低值的键和值
我首先尝试通过执行以下操作获取能力
对象中每个对象的顶部整数值:
Object.keys(abilities).forEach(key => {
let value = abilities[key];
console.log(key)
console.log(value)
let maxval = Object.keys(abilities).reduce((a, b) => abilities[a] > abilities[b] ? a : b);
console.log(maxval)
});
这将打印出内部对象的名称和整个子对象本身
> technical
> {Corners: 12, Crossing: 12, Dribbling: 20, Finishing: 14, First Touch: 17, ...}
但是,maxval
没有给出与最大值相关的任何信息
如何解决我的任务?如果您只需要五个最高值和五个最低值,请提取值并按降序排序,提取最高值和最低值
let abilities={“technical”:{“Corners”:12,“Crossing”:12,“tribbling”:20,“Finishing”:14,“First Touch”:17,“任意球”:13,“Heading”:7,“Long shoots”:11,“Long-foots”:5,“Marking”:3,“Passing”:15,“take”:19,“attacking”:4,“technology”:18},“心智”:{“侵略性”:8,“预期性”:12,“勇敢性”:17,“沉着性”:15,“专注性”:13,“决断性”:16,“决心”:15,“天赋”:18,“领导力”:6,“离球”:14,“定位”:7,“团队合作”:9,“视野”:16,“工作效率”:12},“身体”:{“加速”:17,“敏捷”:20,“平衡”:16,“跳跃伸展”:8,“自然体能”:16,“速度”:16,“耐力”:17,“力量”:11};
const sortedValues=Object.values(abilities).flatMap(Object.entries).sort([,a],,b])=>b-a;
const fiveHighest=分类值切片(0,5);
const fiveLowest=sortedValue.slice(-5);
控制台日志(最高五个);
console.log(Fivelowst);
.as-console-wrapper{max-height:100%!important;top:auto;}
如果您只需要五个最高值和五个最低值,请提取值并按降序排序,提取最高值和最低值
let abilities={“technical”:{“Corners”:12,“Crossing”:12,“tribbling”:20,“Finishing”:14,“First Touch”:17,“任意球”:13,“Heading”:7,“Long shoots”:11,“Long-foots”:5,“Marking”:3,“Passing”:15,“take”:19,“attacking”:4,“technology”:18},“心智”:{“侵略性”:8,“预期”:12,“勇气”:17,“镇静”:15,“专注”:13,“决断”:16,”决心:15,“天赋”:18,“领导力”:6,“离球”:14,“定位”:7,“团队合作”:9,“视野”:16,“工作效率”:12},“身体”:{“加速”:17,“敏捷”:20,“平衡”:16,“跳跃伸展”:8,“自然体能”:16,“速度”:16,“耐力”:17,“力量”:11};
const sortedValues=Object.values(abilities).flatMap(Object.entries).sort([,a],,b])=>b-a;
const fiveHighest=分类值切片(0,5);
const fiveLowest=sortedValue.slice(-5);
控制台日志(最高五个);
console.log(Fivelowst);
.as console wrapper{max height:100%!important;top:auto;}
预期的输出究竟是什么,您希望每个外键的mins和maxes都有一个数组或对象还是什么(比如technical
和mental
)?如果对象是这样的,我希望得到如下结果:top={“Dribbling:20,”敏捷:20,“罚点球”:19,“技术”:18,“天赋”:18}
和“低={”标记:3,“抢断”:4,“长传”:5,“领导力”:6,“头球”:7}`分为两个功能也很好。这是所有对象中的前5个和后5个功能。预期的输出是什么,每个外键的mins和MAXE(如technical
和mental
)是否需要数组或对象或其他东西考虑到这样的目标,我期待的是:top={“运球”:20,“敏捷”:20,“点球”:19,“技术”:18,“天赋”:18}
和'low={“盯人”:3,“抢断”:4,“长传”:5,“领导力”:6,“头球”:7}`分为两个功能也很好。这是所有对象中最高级的5个和最低级的5个功能。有没有办法用数字来获取键的名称?当然有@Dawn17-一秒钟。这就是你想要的@Dawn17?是的,太好了!非常感谢你。没问题@Dawn17,总是很乐意帮助。还有办法获取带号码的键
?当然可以@Dawn17-一秒钟。这就是你想要的@Dawn17吗?是的,太好了!非常感谢。没问题@Dawn17,总是很乐意帮忙。