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

时间:2018-10-29 19:28:24

标签: 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]

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

1 个答案:

答案 0 :(得分:3)

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

这是通常建议使用字符串代替ID而不是数字的原因的一部分。