2017-03-01 89 views
0

进出口变化的JavaScript代码应用程序中的打字稿并注意以下问题:.MAP功能差的JavaScript打字稿

工作的JavaScript代码:

var x= $.makeArray($(comparisonObjects) 
      .map(function (i, o) { 
      if (o.Id !== IdtoRemove) { 
       return o; 
      } 
      return null; 
     })); 

这并不在打字稿工作,因为“O”是断言是“元素”类型的对象,即使它实际上是包含Id的对象。

请注意,我不希望访问元素的id属性。 ComparisonObjects已经是一个拥有自己的Id属性的业务对象数组。

所以实际的问题是,我被迫把我的对象作为一个元素,不允许我访问该对象。

在打字稿中处理这个问题的正确方法是什么?

+1

请注意,这里使用的'.map()'是jQuery'.map()',而不是本地'Array.prototype.map()'。 (至少,这是我使用'$()'的猜测。) – Pointy

+0

如果*是* jQuery,那么它将是'o.id'而不是'o.Id'。第二个参数是(可能)一个DOM元素,属性名称是小写的“id”。 – Pointy

+0

我同意,我目前正在浏览jquery的文档来检查。 [Here](http://api.jquery.com/map/)是相关页面,表示回调函数的第二个参数是'Element' – Aaron

回答

2

如果你使用普通的数组时,你不需要做jQuery的对象:

var x = comparisonObjects.filter(function(object) { 
    return object.Id !== IdToRemove; 
}); 

这会给你一个只包含满足您的条件对象的新数组。数组的原生.map()函数不关注像jQuery .map()那样的返回值。