Javascript 返回对象数组中具有最大值的键的最简单方法是什么?

Javascript 返回对象数组中具有最大值的键的最简单方法是什么?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我正在制作一个简单的RPG,并试图计算角色升级时应该增加哪些属性。它们对每个属性都有一个潜在限制,我想增加距离其潜在限制最远的属性 我可以循环遍历每个属性,并从其潜在值中减去其当前值以获得差值。然后我可以将差异推送到数组中。结果如下: [ {Strength: 5}, {Dexterity: 6}, {Constitution: 3}, {Wisdom: 4}, {Charisma: 8} ] Charisma是差异最大的键,那么我如何评估它并返回键的名称而不是值本身呢 编辑:以下是用于获取阵

我正在制作一个简单的RPG,并试图计算角色升级时应该增加哪些属性。它们对每个属性都有一个潜在限制,我想增加距离其潜在限制最远的属性

我可以循环遍历每个属性,并从其潜在值中减去其当前值以获得差值。然后我可以将差异推送到数组中。结果如下:

[
{Strength: 5},
{Dexterity: 6},
{Constitution: 3},
{Wisdom: 4},
{Charisma: 8}
]
Charisma是差异最大的键,那么我如何评估它并返回键的名称而不是值本身呢

编辑:以下是用于获取阵列的逻辑:

let difference = [];
let key;
for (key in currentAttributes) {
  difference.push({[key]: potentialAttributes[key] - currentAttributes[key]});
};

使用Object.entries简化reduce

常数项=[ {实力:5}, {灵巧度:6}, {宪法:3}, {智慧:4}, {魅力:8} ] 常量最大值=项。还原最大值,当前值,ind=>{ const parts=Object.entriescurrent[0]//返回[KEY,VALUE] return!ind | | parts[1]>最大的[1]?parts:最大的//如果第一个或更大 },空
console.logmaxist[0]//0=KEY,1=maxist VALUE按降序排序并抓取第一项:

让属性=[ {实力:5}, {灵巧度:6}, {宪法:3}, {智慧:4}, {魅力:8} ]; //为了方便 const getValue=obj=>Object.valuesobj[0]; //降序排序 attributes.sorta,b=>getValueb-getValuea; 设最高=属性[0];
console.logObject.keyshighest[0] 您可以创建一个对象,获取条目,并通过获取具有最大值的条目来减少条目。最后从入口取出钥匙

var数据=[{力量:5},{敏捷:6},{体质:3},{智慧:4},{魅力:8}], 最大的=对象 .EntrieObject.assign{},…数据 .reducea,b=>a[1]>b[1]?a:b [0];
console.logmax;你能展示一下你用来生成这个数组的逻辑吗?您的问题是,您正在通过编程Math.max…arr.mape=>e[Object.keyse[0];使用对象数组会使这比需要的更麻烦。这些键可能都是唯一的,所以只需使用一个对象将它们填充到其中。如果您这样做,您的答案是:@ASDFGerte这将返回值,而不是键。