我可以在箭头函数的参数中使用for循环迭代器传递给循环吗?

时间:2018-05-03 03:14:51

标签: javascript arrays for-loop arrow-functions

我正在编程物理模拟,当前版本在我的网站上。我不知道我是否可以发布链接,所以我不会。该程序是一个多链接倒立摆,我正在尝试编写运行物理的函数。要做到这一点,我必须为每个倒立摆的不同值设置很多数组,例如所有惯性矩,质量,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(不是数字)。我究竟做错了什么?我怎样才能做到这一点?

2 个答案:

答案 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)

  1. i函数在包含变量this.ls[i]的循环外传递。
    undefinedi,其中undefined2 * undefined 所以NaN返回this.ls

  2. 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,或者必须将其传递给函数。

  3. 请尝试以下代码

  4. &#13;
    &#13;
    {{1}}
    &#13;
    &#13;
    &#13;