2017-03-01 86 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()那樣的返回值。