出于好奇,javascript map函数在这种情况下返回undefined

时间:2019-01-03 11:32:57

标签: javascript

今天我正在检查GitHub中的一些代码,看到一个我认为是错误的函数后,我结束了使用map函数的尝试。

在我看来,这是代码的子集,但是却可以正常工作。由于没有退货,我认为地图将不会退货。 (状态= [{文本:文本,已完成:已完成}]}

case TOGGLE_TODO:
    return state.map(todo =>
    (todo.id === action.id)
      ? {...todo, completed: !todo.completed}
      : todo
     )

我已经进行了几次尝试,但是在不向map函数添加返回值的情况下,我无法模拟该功能。

测试1:

var arrO = [ {n:0,t:1}, {n:1,t:2}, {n:2,t:3} ];
arrO2 = arrO.map( (obj, index) => {(index === 0)?{...obj, t:obj.t*10}:obj})

arrO2的内容是这样

0: undefined
1: undefined
2: undefined
length: 3

测试2:

arrO3 = arrO.map( (obj, index) => { var res = null; (index === 0)? res = {...obj,  t:obj.t*10} : res = obj ; return res  })

arrO3的内容是这样:

0: {n: 0, t: 10}
1: {n: 1, t: 2}
2: {n: 2, t: 3}
length: 3

我唯一能得到的解释是,在不使用返回值的情况下进行映射拍摄的语法仅在传递的函数不使用索引时才有效。

您怎么看?

0 个答案:

没有答案