函数不会从数组返回值

时间:2017-08-18 07:59:32

标签: 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 

工作正常

1 个答案:

答案 0 :(得分:1)

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

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

对于此示例,很容易使用map方法。

  

map()方法创建一个新数组,其中包含调用a的结果   为调用数组中的每个元素提供了函数。

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());