我遇到了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还是特定的反应。
谢谢!
答案 0 :(得分:0)
尝试地图
array = sortedResult.map((r, index) => {
return {
text: r.name,
onPress: () => this.upload(index)
};
}
一般来说,初学javascript开发人员这是一个非常常见的错误。见Creating closures in loops: A common mistake。社区中首选使用map
或forEach
替换for循环。