首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 怎么补上 空缺数字

在JavaScript中,如果你想要补上一个数组中的空缺数字,通常意味着你需要填充数组中的缺失值,使其连续。这可以通过多种方式实现,具体取决于你的需求。以下是一些常见的方法:

方法一:使用 Array.fromfill

如果你想要创建一个连续的数字数组,并且填充其中的空缺,可以使用 Array.from 方法结合 fill 方法。

代码语言:txt
复制
function fillMissingNumbers(start, end) {
  return Array.from({ length: end - start + 1 }, (_, i) => start + i);
}

const filledArray = fillMissingNumbers(1, 10); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

方法二:使用 for 循环

如果你有一个已有的数组,但其中有些数字缺失,你可以使用 for 循环来遍历并填充这些缺失的数字。

代码语言:txt
复制
function fillMissingNumbersInArray(arr) {
  const result = [];
  for (let i = Math.min(...arr); i <= Math.max(...arr); i++) {
    if (!result.includes(i)) {
      result.push(i);
    }
  }
  return result;
}

const arrayWithGaps = [1, 3, 4, 7, 9];
const filledArray = fillMissingNumbersInArray(arrayWithGaps); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

方法三:使用 reduce

你也可以使用 reduce 方法来遍历数组并填充缺失的数字。

代码语言:txt
复制
function fillMissingNumbersInArray(arr) {
  return arr.reduce((acc, val) => {
    if (acc.length === 0 || acc[acc.length - 1] !== val - 1) {
      acc.push(val);
    }
    while (acc.length > 0 && acc[acc.length - 1] !== val - 1) {
      acc.push(val - 1);
    }
    acc.push(val);
    return acc;
  }, []);
}

const arrayWithGaps = [1, 3, 4, 7, 9];
const filledArray = fillMissingNumbersInArray(arrayWithGaps); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

应用场景

这些方法可以应用于多种场景,例如:

  • 数据可视化时需要连续的数据点。
  • 数据分析中需要填补缺失值以便进行进一步的处理。
  • 在游戏开发中创建连续的地图或关卡编号。

注意事项

  • 在使用这些方法时,需要注意数组中可能存在的重复值,确保填充后的数组仍然保持唯一性。
  • 如果数组非常大,性能可能成为一个问题,这时可以考虑使用更高效的算法或数据结构。

通过上述方法,你可以有效地补上JavaScript数组中的空缺数字,确保数据的连续性和完整性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

怎么理解JS Promise

但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise对象 看完这段话我的内心一阵无语,我就只能怪我自己的理解能力好像没有达到水准一样,并不完全懂这段话在说什么,这让我一度怀疑我这智商是不是不够用了,怎么就没理解这段话说的是什么意思...我们来看看阮一峰大大是怎么总结的: (1)对象的状态不受外界影响,promise对象代表一个异步操作,有三种状态,pending(进行中)、fulfilled(已成功)、rejected(已失败)。...我们来看看MDN怎么说: onFulfilled 当Promise变成接受状态(fulfillment)时,该参数作为回调函数被调用(参考: Function)。...js异步操作是通过js的事件循环机制EventLoop实现的。...对于异步任务来说,当其可以被执行时,会被放到一个 任务队列(task queue) 里等待JS引擎去执行。

11.7K30
  • 「硬核JS」数字之美

    ,就不是 4 位二进制能存下的了,所以,在只有 4 位存储二进制时,原码的取值范围只有 -7 ~ +7 原码 这种方式对人来说是很好理解的,但是机器不了解啊,表达值没问题,但是正负相加怎么加呢?...存在两个不同的二进制表达方式 于是先辈们为了解决这个问题,又提出了 补码 的概念,也是针对 负数 来做处理的,即从原来 反码 的基础上,补充一个新的代码 1 如上图所示,处理 反码 中的 -0 时,给 1111 再补上一个...我们再看负 7 的补码也就是反码加了 1 后的二进制表达方式为 1001 ,以 4 位存储的方式我们发现补码表 1001 还可以再小一位,也就是 1000 即 -8,如下图 于是补码的最后补上了一个...) 所以数字的最大正数和最小负数范围如下 1.7976931348623157e+308 ~ -1.7976931348623157e+308 如果超过这个值,则数字太大就溢出了,在 JS 中会显示...0,学名反向溢出 JS中整数的范围 和数字大小不同,数字可以有小数,但是整数就只是单纯整数 我们从尾数 M 来分析,精度最多是 53 位(包含规格化的隐含位 1 ),精确整数的范围其实就是 M 的最大值

    5.5K20

    sqlformat数字格式化_java怎么输出数字

    如果你只想知道怎么用,可以直接看下面使用示例↓↓↓。三分钟速成。 正文 如果你对java源码比较了解。你会发现java对文字,数字的格式化,是有一个公共的父类的Format。...JavaAPI官方描述 NumberFormat NumberFormat帮助您格式化和解析任何区域设置的数字。...您的代码可以完全独立于小数点,千位分隔符的区域设置约定,甚至是使用的特定十进制数字,或者数字格式是否为十进制。...DecimalFormat DecimalFormat是NumberFormat十进制数字格式的具体子类 。它具有多种功能,旨在解析和格式化任何语言环境中的数字,包括支持西方,阿拉伯语和印度语数字。...只写一下配合FieldPosition怎么使用的示例: NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault())

    1.6K30

    【JS】125-重温基础:数字

    「本章节复习的是JS中的数字类型,涉及的API比较多。」 前置基础: 在JavaScript中,数字为双精度浮点类型(即一个数字范围只能在-(253-1)和(253-1)之间),整数类型也一样。...另外数字类型也可以是以下三种符号值: +Infinity : 正无穷; -Infinity : 负无穷; NaN : 非数字(not a number); 1.数字对象 JS中内置了Number对象的一些常量属性...= 0.2, c = 0.3; let d = (Math.abs(a + b - c) < Number.EPSILON); d; // true Number.MIN_SAFE_INTEGER JS...Number.MAX_SAFE_INTEGER JS中最大的安全的integer型数字 (253 - 1)。...let a2 = '字符串:' + a.toPrecision(1);// "字符串:1" let a2 = '字符串:' + a.toPrecision(2);// "字符串:1.2" 3.数学对象 JS

    2.5K00

    只听说过CSS in JS,怎么还有JS in CSS?

    本文由作者 Menndy 授权原创发布 CSS in JS CSS in JS是一种解决css问题想法的集合,而不是一个指定的库。...将css放在js中使我们更方便的使用js的变量、模块化、tree-shaking。还解决了css中的一些问题,譬如:更方便解决基于状态的样式,更容易追溯依赖关系,生成唯一的选择器来锁定作用域。...尽管CSS in JS不是一个很新的技术,但国内的普及程度并不高。...JS in CSS又是什么 在上面我们提到CSS in JS就是把CSS写在JavaScript中,那么JS in CSS我们可以推断出就是可以在CSS中使用JavaScript脚本,如下所示。...更多syntax属性值: 属性值 描述 长度值 数字 百分比 长度或百分比,calc将长度和百分比组成的表达式

    6.8K40
    领券