首页 > 解决方案 > 按另一个数组中的元素过滤数组时出现奇怪的数学

问题描述

我试图从已经请求的新请求中删除 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]

我能够通过使用字符串而不是数字来解决这个问题。

标签: javascriptarrays

解决方案


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

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


推荐阅读