You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

JavaScript如何提取多维数组中重复的最高投标值至独立数组?

解决JavaScript竞标系统重复最高出价的问题

嘿,作为编程新手遇到这种问题完全不用慌,咱们一步步来拆解解决:

步骤1:找出最高出价金额

首先得确定所有出价里的最高值,我们可以用数组的map方法提取所有出价金额,再用Math.max()拿到最大值:

const highestBid = Math.max(...bidarray.map(bid => bid[1]));
  • bidarray.map(bid => bid[1]):把原始数组里每个子数组的第二个元素(也就是出价数)提取出来,得到一个纯金额的数组[55,55,20,30,55,10]
  • ...是扩展运算符,把这个金额数组拆成单个参数传给Math.max(),这样就能算出最高出价55了

步骤2:提取所有最高出价的项

接下来用filter方法筛选出所有出价等于最高值的子数组,这就是你要的duparray

const duparray = bidarray.filter(bid => bid[1] === highestBid);

filter会遍历原始数组,只保留符合bid[1] === highestBid条件的元素,最终得到[ ['Sarah', 55], ['John', 55], ['George', 55] ]

步骤3:随机选出赢家

最后从duparray里随机挑一个元素就行,用Math.random()生成随机索引:

const randomIndex = Math.floor(Math.random() * duparray.length);
const winner = duparray[randomIndex];
  • Math.random()生成0到1之间的随机小数,乘以数组长度(这里是3)得到0到3之间的数
  • Math.floor()把这个数向下取整,得到0、1、2中的一个合法索引,再用这个索引从duparray里取出赢家

完整代码示例

把所有步骤整合起来,加上注释,方便你理解:

// 原始出价数组
const bidarray = [ ['Sarah', 55], ['John', 55], ['Joe', 20], ['David', 30], ['George', 55], ['Yogi', 10] ];

// 1. 获取最高出价
const highestBid = Math.max(...bidarray.map(bid => bid[1]));

// 2. 提取所有最高出价的项
const duparray = bidarray.filter(bid => bid[1] === highestBid);

// 3. 随机选择赢家
const randomIndex = Math.floor(Math.random() * duparray.length);
const winner = duparray[randomIndex];

// 输出结果
console.log("重复最高出价的数组:", duparray);
console.log("最终赢家:", winner);

你可以把这段代码复制到浏览器控制台或者Node环境里运行,就能看到效果啦~

内容的提问来源于stack exchange,提问作者madruk20

火山引擎 最新活动