我正在编程物理模拟,当前版本在我的网站上。我不知道我是否可以发布链接,所以我不会。该程序是一个多链接倒立摆,我正在尝试编写运行物理的函数。要做到这一点,我必须为每个倒立摆的不同值设置很多数组,例如所有惯性矩,质量,thetas等的数组。这就是我现在正在做的事情:
function fillArray(begin, end, alg) {
let arr = [];
for (let i = begin; i < end; i++) {
arr[i] = alg();
}
return arr;
}
let Ls = fillArray(0, numPoles, () => 2 * this.ls[i]);
当我输出Ls数组时,它表示其中的每个元素都是Nan(不是数字)。我究竟做错了什么?我怎样才能做到这一点?
答案 0 :(得分:0)
使用Array.from
内联可能要容易得多,而不是调用另一个独立函数:
const obj = {
ls: [5, 6, 7, 8, 9],
makeLs: function() {
const numPoles = 5;
const Ls = Array.from({ length: numPoles }, (_, i) => 2 * this.ls[i]);
console.log(Ls);
},
};
obj.makeLs();
更接近您的原始代码,您可以通过alg
接受参数来修改它,i
:
const obj = {
ls: [5, 6, 7, 8, 9],
makeLs: function() {
function fillArray(begin, end, alg) {
let arr = [];
for (let i = begin; i < end; i++) {
arr[i] = alg(i);
}
return arr;
}
const numPoles = 5;
let Ls = fillArray(0, numPoles, (i) => 2 * this.ls[i]);
console.log(Ls);
},
};
obj.makeLs();
答案 1 :(得分:0)
i
函数在包含变量this.ls[i]
的循环外传递。
undefined
为i
,其中undefined
为2 * undefined
所以NaN
返回this.ls
function fillArray(begin, end, alg) {
let arr = [];
for (let i = begin; i < end; i++) {
arr[i] = alg(i);
}
return arr;
}
let ls = [1,3,11,22];
let numPoles = 3;
let Ls = fillArray(0, numPoles, (i) => 2 * ls[i]);
console.log(Ls);
不在函数范围内,因此箭头函数应使用全局ls,或者必须将其传递给函数。
请尝试以下代码
{{1}}&#13;