Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 如何按key.coins值对数组中的对象进行排序?来自JSON_Javascript - Fatal编程技术网

Javascript 如何按key.coins值对数组中的对象进行排序?来自JSON

Javascript 如何按key.coins值对数组中的对象进行排序?来自JSON,javascript,Javascript,我正在制作discord.js bot,我想要一个make命令,该命令将使用top balance编写5个用户。当我运行这个代码时 let coins = require("./coins.json"); for (var key in coins) { if (coins.hasOwnProperty(key)) { console.log(key + ": " + coins[key].coins); } } 我得到了所有的线索 298462251453775873: 2090

我正在制作discord.js bot,我想要一个make命令,该命令将使用top balance编写5个用户。当我运行这个代码时

let coins = require("./coins.json");
for (var key in coins) {
  if (coins.hasOwnProperty(key)) {
  console.log(key + ": " + coins[key].coins);
  }
}
我得到了所有的线索

298462251453775873: 2090

208120625947082752: 210

461643208422588446: 370

290099182310785025: 10

468737161563209738: 420

381182620513468417: 40

408908116101431298: 180...

意思是:
User:coins
。如何对这些值进行排序而不丢失哪个用户拥有它?

因此,将其转换为具有Object.keys或Object.entries的数组并对其进行排序

const用户={
'1': 100,
'2': 200,
'3': 50
}
const sorted=Object.entries(users.sort)((a,b)=>a[1]>b[1]?-1:1)
console.log(已排序)
使用
Object.keys()
array.slice()
,您可以实现所需的功能

const硬币={
“298462251453775873”:{硬币:2090},
“208120625947082752”:{硬币:210},
“461643208422588446”:{硬币:370},
“290099182310785025”:{硬币:10},
“468737161563209738”:{硬币:420},
“381182620513468417”:{硬币:40},
“40890816101431298”:{硬币:180}
}
const top5Coins=Object.keys(coins).sort(函数(a,b){返回coins[a].coins[b].coins}).slice(0,5);
const mappedTop5=top5Coins.map(c=>`${c}:${coins[c].coins}`);

console.log(mappedTop5.join(“\n”)
您可以使用下面类似的
对象.entries
数组.map
来实现对象排序

let coins={
‘298462251453775873’:{硬币:2090}
,'208120625947082752':{硬币:210}
,'461643208422588446':{硬币:370}
,'290099182310785025':{硬币:10}
,'468737161563209738':{硬币:420}
,'381182620513468417':{硬币:40}
,'40890816101431298':{硬币:180}
}
硬币=对象.分配(…对象.条目(硬币)
.sort(([,a],,b])=>a.coins-b.coins)
.map(([k,v])=>({[k]:v})))
用于(硬币中的var键){
如果(硬币。拥有自己的财产(钥匙)){
console.log(key+:“+coins[key].coins);
}
}

//console.log(coins)
不是按键值,而是按键值。coins值对于理解数组和对象文字之间的差异很重要。显示的代码似乎与数组无关,对象本身无法排序,但可以转换为可排序数组是的,这会返回更多数组。如何从数组1中获取值1?因此您读取索引0作为id,读取索引1作为值。。。。第二个向您展示了如何获取订单和引用值。。。。两者都回答了这个问题。无法对对象进行排序。这个示例给了我错误的值,我想要第二个值,而不是第一个。不确定这里有什么问题?键已排序,返回前5位我在排序功能中将a与b切换时发现了这一点…:)