javascript - 按另一个数组中的元素过滤数组时出现奇怪的数学

标签 javascript arrays

我试图从已请求的新请求中删除 id。在下面的代码中,我期望删除 ...56 id,只保留 ...81 id。 56 被删除,但令我惊讶的是 81 已减少到 80。

const oldIds = [
  10032789416531456
];

const newIds = [
  10032789435529381,
  10032789416531456
];

const result = newIds.filter(newId => !oldIds.some(oldId => oldId === newId));
console.log(result)
//Expected result is: [10032789435529381], instead I get [10032789435529380]

我能够通过使用字符串代替数字来解决这个问题。

最佳答案

如果在js控制台中输入10032789435529381,它会返回10032789435529380。您超出了 JavaScript 整数的容量,导致它被视为不太精确的 float 。

这就是为什么通常建议使用字符串作为 ID 而不是数字的部分原因。

关于javascript - 按另一个数组中的元素过滤数组时出现奇怪的数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53052485/

相关文章:

javascript - 当我在函数中使用新的 XMLHttpRequest 时,所有页面都会重新加载

javascript - Jquery Javascript 对象 - 将某些值与另一个类似对象进行比较并替换

c - 有没有办法将元素添加到列表/数组? [C]

javascript - 嵌套列表到数组

javascript - React 功能组件 - 如何计算实例?

JavaScript 变量声明

javascript - 数据表通过解析其值对一列进行排序

javascript - 停止将数组插入数组

c++ - 4个数组中4个整数的总和

javascript - 从嵌套数组中提取子数组