使用 map 或 reduce 等数组运算符获取从 0 到 2π 角的 n 个点?
Get n number of points from angle 0 to 2π using an array operator like map or reduce?
假设需要这些点来绘制正弦波:
let points = [];
for(var angle = 0; angle < Math.PI * 2; angle += .01) {
points.push(Math.sin(angle));
}
console.log(points);
现在想象一下,我们想要控制点的数量,但仍然得到 2π 的完整旋转:
const pointsArr = new Array(10000).fill().map((i) => {
// how to convert above loop
});
console.log(pointsArr);
您可以使用 Array.from
:
生成数组
function makePoints(numPoints) {
const diffBetweenPoints = (Math.PI * 2) / (numPoints - 1);
return Array.from({ length: numPoints }, (_, i) => Math.sin(i * diffBetweenPoints));
}
console.log(makePoints(5));
提供给 Array.from
的第二个参数是一个可选的 map
函数,其行为与 Array.prototype.map
相同。
假设需要这些点来绘制正弦波:
let points = [];
for(var angle = 0; angle < Math.PI * 2; angle += .01) {
points.push(Math.sin(angle));
}
console.log(points);
现在想象一下,我们想要控制点的数量,但仍然得到 2π 的完整旋转:
const pointsArr = new Array(10000).fill().map((i) => {
// how to convert above loop
});
console.log(pointsArr);
您可以使用 Array.from
:
function makePoints(numPoints) {
const diffBetweenPoints = (Math.PI * 2) / (numPoints - 1);
return Array.from({ length: numPoints }, (_, i) => Math.sin(i * diffBetweenPoints));
}
console.log(makePoints(5));
提供给 Array.from
的第二个参数是一个可选的 map
函数,其行为与 Array.prototype.map
相同。