AlertIOS For循环

时间:2015-12-17 14:40:29

标签: javascript react-native

我遇到了AlertIOS的问题

var array =[];
for (var i = 1; i <= sortedResult.length; i++) {      
  array.push({
    text: sortedResult[i].name,
    onPress: () => this.upload(i)
  });
}
AlertIOS.alert(
  'Question ?',
  null,
  array
);

问题是for循环中的变量i不会被其值替换:

{text: sortedResult[i].name, onPress: () => this.upload(i)}

{text: sortedResult[i].name, onPress: () => this.upload(i)}
...

而不是

{text: sortedResult[1].name, onPress: () => this.upload(1)}

{text: sortedResult[2].name, onPress: () => this.upload(2)}
...

我不知道它是特定于javascript还是特定的反应。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试地图

array = sortedResult.map((r, index) => {      
  return {
    text: r.name,
    onPress: () => this.upload(index)
  };
}

一般来说,初学javascript开发人员这是一个非常常见的错误。见Creating closures in loops: A common mistake。社区中首选使用mapforEach替换for循环。