TypeError:obj是未定义的Coffeescript

时间:2014-05-14 12:29:57

标签: javascript jquery coffeescript

我试图迭代一个数组来查找属性是否匹配某些条件并检索条件适用的索引并考虑使用jquerys map方法。在找到我的问题here的确切解决方案和同样的问题之后,我推出了我的咖啡因以便让事情发生。

我的目标是:

newWaypoint = {waypoint:latlon.toString(), legStart:leg.start_location.toString() ,legNumber:legNo.toString()}

并将这些对象推送到一个简单的数组中:@newDraggableWaypoints.push newWaypoint

这是给我headeache的代码:

buildNewWaypointsFromDraggable:()->
    item=@allLegWaypoints[0]
    indexes = $.map(@newDraggableWaypoints, (obj, index) =>
        index if obj.legStart  is item
    )
    window.alert indexes.toString()

为什么会显示此消息?谢谢

1 个答案:

答案 0 :(得分:1)

  

检索条件适用的索引

不,您的map会为数组中的每个元素检索一些内容:index如果条件已满足,则undefined。如果要排除某些元素,则需要使用filter。你可以做

indexes = @newDraggableWaypoints.map (obj, index) =>
  index if obj.legStart is item
.filter (obj) ->
  obj is not undefined

indexes = @newDraggableWaypoints
  .map (obj, index) -> [obj, index]
  .filter ([obj, i]) -> obj.legStart is item
  .map ([o, index]) -> index