Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中获取对象对象中的前5名和最低5名值?_Javascript_Arrays_Object_Ecmascript 6 - Fatal编程技术网

如何在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,总是很乐意帮忙。