首页 > 解决方案 > 为什么我在生成器增量时得到 NAN?

问题描述

我想在每次下一次调用时增加"c"对象中的属性值,"test"但我得到了{ value: NaN, done: false }. 请帮我

const test = {
  c: [{ a: 1 }, { a: 2 }, { a: 3 }]
};

function* responseDataSet(dataSet, elem) {
  let i = 0;
  while (true) {
    const inc = yield dataSet[elem][i]++; // here i try increment
    i = (dataSet[elem].length + i + inc) % dataSet[elem].length;  
  }
}

const launch = responseDataSet(test, 'c');

console.log(launch.next());

标签: javascript

解决方案


你可以这样修复

const inc = yield (dataSet[elem][i]['a'])++; // here i try

检查以下演示的结果。

const test = {
  c: [{ a: 1 }, { a: 2 }, { a: 3 }]
};

function* responseDataSet(dataSet, elem) {
  let i = 0;
  while (true) {
    const inc = yield (dataSet[elem][i]['a'])++; // here i try increment
    i = (dataSet[elem].length + i + inc) % dataSet[elem].length;  
  }
}

const launch = responseDataSet(test, 'c');

console.log(launch.next());


推荐阅读