javascript - 函数不从数组返回值

标签 javascript arrays typescript

我有一些代码片段

 for(var i=0; i < this.arr2.length; i++) {
      arr.push({
          id: i.toString(),
          label: this.arr2[i],
          display: () => this.arr2[i]
      })
  }

如果我正在做这样的事情,为什么显示未定义

let val = this.arr2[i];
display: () => val 

工作正常

最佳答案

您应该使用let关键字来声明 block scope本地变量

for(let = 0; i < this.arr2.length; i++) {
  arr.push({
      id: i.toString(),
      label: this.arr2[i],
      display: () => this.arr2[i]
  })
}

对于此示例,可以轻松使用 map 方法。

The map() method creates a new array with the results of calling a provided function on every element in the calling array.

arr=arr2.map(function(item,i){
   return {id:i,label:item,display:()=>item};
});

简短示例:

arr2=[1,2,3,4,5];
arr=arr2.map(function(item,i){
       return {id:i,label:item,display:()=>item};
});
console.log(arr[1].display());

关于javascript - 函数不从数组返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751477/

相关文章:

javascript - 如何减少 Angular 应用程序构建时间?

javascript - onclick 不适用于 document.getElementsByClassName

javascript - 将 codebird 回复解析为数组(或将 json 文本访问到 codebird 的回复中)

javascript - 如何将包含对象字符串的数组转换为常规键对象对?

Angular 4/5/6 全局变量

javascript - 组合/合并可观察对象

javascript - 为什么这个选择菜单在 jQuery 和 JQM 的新版本组合中失败?

javascript - 如何在 PHP 和 JavaScript 中每分钟持续运行查询来检查数据库

php - 如何添加到关联数组

javascript - 如何使每个循环在第一个 true 条件下停止