You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:如何批量向数组添加同一元素及硬币找零函数调试

问题解答

问题一:一次性向数组中多次添加同一个元素

这里有几种简洁高效的方法可以实现:

  • 方法一:Array.fill() + 扩展运算符
    如果是往已有数组里添加n个相同元素,可以先创建一个包含n个目标元素的临时数组,再用扩展运算符展开后push到原数组:

    const arr = [1, 2];
    const element = 3;
    const times = 4;
    arr.push(...new Array(times).fill(element));
    // 现在arr变成 [1, 2, 3, 3, 3, 3]
    
  • 方法二:Array.from()
    Array.from可以通过指定长度和映射函数生成数组,同样配合扩展运算符添加:

    const arr = [1, 2];
    const element = 3;
    const times = 4;
    arr.push(...Array.from({length: times}, () => element));
    // 结果同上
    
  • 方法三:直接生成新数组
    如果不需要基于原数组,而是直接创建包含多个相同元素的数组,直接用fill即可:

    const arr = new Array(5).fill('apple');
    // arr是 ['apple', 'apple', 'apple', 'apple', 'apple']
    

问题二:实现硬币找零函数

先分析你遇到的两个问题:

  1. 无法显示多个相同硬币:核心是没计算当前硬币能使用的次数,只处理了单次;
  2. 无法移除0值:是因为当硬币数量为0时错误地添加了无效值,只要判断数量大于0再添加即可。

这里是修正并完善后的代码,完全解决你的问题:

function getCoins() {
  const coins = [25, 10, 5, 1];
  // 把输入的字符串转成数字,避免后续计算出错
  let amount = Number(prompt("Enter an amount to convert into coins"));
  const result = [];

  for (const coin of coins) {
    // 计算当前硬币最多能使用多少次(向下取整)
    const coinCount = Math.floor(amount / coin);
    
    if (coinCount > 0) {
      // 一次性添加coinCount个当前硬币到结果数组
      result.push(...new Array(coinCount).fill(coin));
      // 更新剩余需要找零的金额
      amount = amount % coin;
    }

    // 如果剩余金额为0,提前退出循环,提升效率
    if (amount === 0) break;
  }

  console.log(result);
  return result;
}

关键修复点说明:

  • 解决多硬币显示问题:用Math.floor(amount / coin)得到当前硬币的使用次数,再通过new Array(coinCount).fill(coin)生成对应数量的硬币数组,用扩展运算符一次性加入结果数组,这样就能出现多个相同硬币(比如输入56时,25会被计算2次,所以添加两个25);
  • 解决0值问题:只有当coinCount > 0时才执行添加操作,彻底避免0值混入结果;同时每次更新剩余金额为amount % coin,当金额清零后提前终止循环,减少不必要的计算。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:42:12