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

时间:2019-04-29 04:10:48

标签: javascript arrays json ecmascript-5

我正在尝试从该数组中获取具有最高数字的用户和值,但我的搜索没有运气。我开始怀疑数组是否写得不好。

{
  "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
}

4 个答案:

答案 0 :(得分: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));

答案 1 :(得分: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()获得的数组中返回相应的属性。

答案 2 :(得分:0)

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

答案 3 :(得分:-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)