如何从此数组中获取最大数字值和用户名?

问题描述 投票:-1回答:4

我试图从这个阵列中获得具有最高编号的用户和值,但在我的搜索中没有运气。我开始怀疑我的数组写得不好。

{
  "radtech2": 1,
  "conorlarkin4": 25,
  "jdon2001": 15,
  "nobel_veo": 101,
  "frapoden": 1,
  "duckyboy17": 31,
  "faeded": 30,
  "jimbob20001": 17,
  "leb0wski": 15,
  "3cavalry": 2,
  "hardoak22": 25,
  "deep_slide": 10000,
  "sillywil": 7
}
javascript arrays json ecmascript-5
4个回答
1
投票

const users = {
  "radtech2": 1,
  "conorlarkin4": 25,
  "jdon2001": 15,
  "nobel_veo": 101,
  "frapoden": 1,
  "duckyboy17": 31,
  "faeded": 30,
  "jimbob20001": 17,
  "leb0wski": 15,
  "3cavalry": 2,
  "hardoak22": 25,
  "deep_slide": 10000,
  "sillywil": 7
};

const highestUser = users => Object.keys(users).reduce(
  (highest, current) => highest.val > users[current] ? highest : { user: current, val: users[current] },
  { user: undefined, val: -Infinity }
).user;

console.log(highestUser(users));

0
投票

让我尝试使用Object.keys()Array.reduce()将其挤压成单线方法。

const users = {
  "radtech2": 1,
  "conorlarkin4": 25,
  "jdon2001": 15,
  "nobel_veo": 101,
  "frapoden": 1,
  "duckyboy17": 31,
  "faeded": 30,
  "jimbob20001": 17,
  "leb0wski": 15,
  "3cavalry": 2,
  "hardoak22": 25,
  "deep_slide": 10000,
  "sillywil": 7
};


const res = Object.keys(users).reduce((a, b) => users[a] > users[b] ? a : b);

console.log(res);

上面的代码是如何工作的,我从users对象获取键数组,并使用reduce来获取最高可能值,并从Object.keys()获得的数组中返回相应的属性。


0
投票

使用keys()entries()方法搜索您的JSON对象。将最大值保存到例如const largest然后找出哪个键属于这个值。


-1
投票

你在问题中展示的是Object,而不是Array;但是,它确实需要变成一个数组才能使用它。

您可以使用Object.entries()执行此操作,Array.reduce()将返回对象中所有键/值对的数组。

然后你可以使用const data = { "radtech2": 1, "conorlarkin4": 25, "jdon2001": 15, "nobel_veo": 101, "frapoden": 1, "duckyboy17": 31, "faeded": 30, "jimbob20001": 17, "leb0wski": 15, "3cavalry": 2, "hardoak22": 25, "deep_slide": 10000, "sillywil": 7 } let winner = Object.entries(data).reduce((a, b) => (a[1] > b[1]) ? a : b) console.log(winner)来提取具有最大值的那个。

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.