gpt4 book ai didi

javascript - 按 Javascript 中其他数组的值对数组进行排序?

转载 作者:行者123 更新时间:2023-11-29 22:05:18 25 4
gpt4 key购买 nike

我在使用 Javascript 对一手牌进行排序时遇到了问题,部分原因是我一直在尝试弄清楚何时使用数组以及何时使用对象,部分原因是 Javascript 不太容易使用比如说,PHP 在数组方面。我也不能使用 jQuery,因为这是服务器端 Node.js 代码,我想坚持使用纯 Javascript。

手的格式是这样开始的:

[ 'QD', '8H', 'QS', '10C', '10D', '7D', 'KH', '9S' ]

如您所见,每张牌都标注为等级+花色,因此 QD 是方 block 皇后,8H 是红桃 8 等。按字母顺序对它们进行排序是 Not Acceptable 。我需要对它们进行排序的方式是根据以下数组中给出的值,从最高到最低:

[ QD: 25,
'8H': 32,
QS: 45,
'10C': 17,
'10D': 27,
'7D': 21,
KH: 36,
'9S': 43 ]

作为旁注,有人能告诉我为什么有些卡名周围有 而有些没有?以上是 console.log 的输出,所有“卡名”都以相同的方式初始化。

所以数组应该是这样的:

[ 'QS', '9S', 'KH', '8H', '10D', 'QD', '7D', '10C' ]

我知道逻辑上需要做什么,但我不知道如何用 Javascript 完成它。在 PHP 中,我会对卡片值数组进行排序,然后使用 foreach 循环遍历它,其中 key 就是卡片;然后用这个数组的键创建一个手数组。但是在 Javascript 中,我什至不确定如何获取数组的键。

最佳答案

你可以这样做:

var ranks = { 
'QD': 25,
'8H': 32,
'QS': 45,
'10C': 17,
'10D': 27,
'7D': 21,
'KH': 36,
'9S': 43 };

var toSort = [ 'QD', '8H', 'QS', '10C', '10D', '7D', 'KH', '9S' ];

toSort.sort(function(left, right) {
return ranks[right] - ranks[left]; // descending order
});

或者,您可以只使用 ranks 映射,并通过以下方式获取 suits 数组:

Object.keys(ranks).sort(...same_as_above...)

关于javascript - 按 Javascript 中其他数组的值对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com