【发布时间】:2022-04-14 04:52:35
【问题描述】:
我得到一个包含未知数量数据的数组。 但我只有预定义的数据量要显示/存储。 如何在 JavaScript 中获取初始数组的每个第 n 个元素并减少它?
例如:我得到一个 size=10000 的数组,但只能显示 n=2k 个元素。
我是这样尝试的: delta= Math.round(10*n/size)/10 = 0.2 -> 取初始数组的每 5 个元素。
for (i = 0; i < oldArr.length; i++) {
arr[i] = oldArr[i].filter(function (value, index, ar) {
if (index % delta != 0) return false;
return true;
});
}
对于 0.2,它始终为 0,但对于其他一些增量 (0.3),它正在工作。 delta = 0.4 相同,我可以工作,但每隔一个元素就会被带走。我该怎么做才能让它发挥作用?
【问题讨论】:
-
什么是
n?k是什么?delta是什么?oldArr是什么? -
delta = size / n怎么样? -
0.2 均分所有整数,所以
someInt % 0.2 == 0总是。我想你想要someInt % (1 / 0.2),即someInt % 5 -
@James
1 % 0.2为我生成0.19999999999999996,因为 floating point math is broken -
@Oriol 你是对的!
1 % 0.25有效(因为 0.25 可以精确地表示为二进制,我想),我想在非整数操作数上使用模运算符在 JS 中是个坏主意。
标签: javascript arrays