Bea*_*ean 0 javascript arrays sorting
我正在制作一个简单的RPG,并尝试计算角色升级时应增加哪个属性。它们对每个属性都有潜在的限制,我想增加距离其潜力最远的属性。
我可以遍历每个属性,并从其潜在值中减去其当前值以获得差值。然后,我可以将差异推到数组中。结果看起来像:
[
{Strength: 5},
{Dexterity: 6},
{Constitution: 3},
{Wisdom: 4},
{Charisma: 8}
]
Run Code Online (Sandbox Code Playgroud)
Charisma是差异最大的键,那么如何评估此值并返回键的名称(而不是值本身)?
编辑:这是用于获取数组的逻辑:
let difference = [];
let key;
for (key in currentAttributes) {
difference.push({[key]: potentialAttributes[key] - currentAttributes[key]});
};
Run Code Online (Sandbox Code Playgroud)
使用Object.entries轻松简化
const items = [
{ Strength: 5 },
{ Dexterity: 6 },
{ Constitution: 3 },
{ Wisdom: 4 },
{ Charisma: 8 }
]
const biggest = items.reduce((biggest, current, ind) => {
const parts = Object.entries(current)[0] //RETURNS [KEY, VALUE]
return (!ind || parts[1] > biggest[1]) ? parts : biggest // IF FIRST OR BIGGER
}, null)
console.log(biggest[0]) // 0 = KEY, 1 = BIGGEST VALUERun Code Online (Sandbox Code Playgroud)
您的数据模型对于带有对象的数组有点奇怪,一个更好的模型就是一个对象。
const items = {
Strength: 5,
Dexterity: 6,
Constitution: 3,
Wisdom: 4,
Charisma: 8
}
const biggest = Object.entries(items)
.reduce((biggest, current, ind) => {
const parts = current
return (!ind || parts[1] > biggest[1]) ? parts : biggest
}, null)
console.log(biggest[0])Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |