我正在寻找类似于numpy.linspace 的东西,以根据起始值、结束值和数组中所需的值数量生成数字数组。
example:
start=2.0, end=3.0, num=5
result = [2.0, 2.25, 2.5 , 2.75, 3.0]
Run Code Online (Sandbox Code Playgroud)
我遇到过this,但它根据之间的步骤分隔了范围。
JavaScript 是否有内置方法来完成此操作?
mho*_*ges 17
正如其他人提到的,JavaScript 中没有内置函数,但这是您可以自己实现的一种方法。这个具体的例子有点冗长,所以你可以确切地看到发生了什么。希望能帮助到你!
function makeArr(startValue, stopValue, cardinality) {
var arr = [];
var step = (stopValue - startValue) / (cardinality - 1);
for (var i = 0; i < cardinality; i++) {
arr.push(startValue + (step * i));
}
return arr;
}
console.log(makeArr(2, 3, 5));
console.log(makeArr(5, 10, 5));
console.log(makeArr(5, 10, 6));
console.log(makeArr(5, 31, 4));
Run Code Online (Sandbox Code Playgroud)
更新:如果您希望数字四舍五入到小数点后两位,您可以将该arr.push(...)
行更改为以下内容:
arr.push(parseFloat((currValue + (step * i)).toFixed(2)));
或者
arr.push(Math.round((currValue + (step * i)) * 100) / 100);
STJ*_*STJ 11
您可以使用Array.from
而不是手动推送到数组:
function linspace(start, stop, num, endpoint = true) {
const div = endpoint ? (num - 1) : num;
const step = (stop - start) / div;
return Array.from({length: num}, (_, i) => start + step * i);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这对于 num=1 和 endpoint=true 不起作用。
归档时间: |
|
查看次数: |
6485 次 |
最近记录: |