javascript - 按另一个数组中的元素过滤数组时出现奇怪的数学
问题描述
我试图从已经请求的新请求中删除 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]
我能够通过使用字符串而不是数字来解决这个问题。
解决方案
如果你10032789435529381
在 js 控制台中输入,它会返回10032789435529380
. 您已经超出了 javascript 整数的容量,导致它被视为不太精确的浮点数。
这就是为什么通常建议使用字符串作为 ID 而不是数字的部分原因。
推荐阅读
- amazon-web-services - 运行状况检查命令和环境变量到 ECS 任务定义 Cloudformation 模板
- javascript - 两个材料在三个.js 中的同一个地方
- python - ModuleNotFoundError:尝试添加外键约束时没有名为“project.app”的模块?
- c# - 无法在 C# 应用程序上找到特定于供应商的 UUID
- amazon-web-services - 创建 CloudFront 分配时“指定的密钥不存在”
- javascript - 有没有办法使用没有库的纯 javascript 将图像复制到剪贴板?
- class - Weka 中每个班级的准确性
- db2-luw - DB2 LUW - JSON_Table 将 json 数组数据读取为表格格式
- javascript - Adonis js Where 子句不起作用。此代码始终返回值 0
- python - 如何在 @ag.args 装饰器中使用 dict?