gpt4 book ai didi

javascript - JS 均匀减少数组

转载 作者:行者123 更新时间:2023-11-28 16:52:14 26 4
gpt4 key购买 nike

我想将该数组减少到 5 个数字,但尽可能均匀。所以我需要开始编号、结束编号和中间的编号。

const range = [8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 30000]

基本上,上面的数组是我拥有的 slider 的数据集,我想显示下面的数字,以便用户也可以看到 slider 的滑动位置,但是数字太多,无法很好地显示。

不知道如何做到这一点,这是我的尝试,但由于不均匀而导致数字间隔奇怪。

const steps = range[range.length - 1] / 5;
const start = range[0];
const stop = range[range.length - 1];

let marks = Array(Math.ceil((stop - start) / steps)).fill(start).map((x, y) => x + y * steps);
marks.push(stop);
console.log(marks);

最佳答案

由于您使用的是第一个和最后一个值,因此实际上只需执行 4 个步骤即可接收 5 个值 (n-1)。让 steps 为一个小数值,表示每次迭代之间要跨越的索引数,从 0 开始,到数组中的最高索引为止。

const range = [8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 30000]

const values = 5;
const steps = (range.length-1) / (values-1);

let marks=[];
for(let i=0; i<values; i++){
console.log("Fractional index", i*steps); //just for display purposes
marks.push(range[Math.round(i*steps)]);
}
console.log(marks);

关于javascript - JS 均匀减少数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59774786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com