[英]Underscore.js `filter` not working
我有以下代碼片段,用於從用戶選擇的列表中選擇哪個郊區(省略了不相關的代碼):
var allSuburbsList = new Array([{"SuburbID":1,"SuburbAreaID":3,"SuburbName":"Alberante","SuburbActive":true,"Area":null,"Agents":[]},{"SuburbID":4,"SuburbAreaID":3,"SuburbName":"Alberton North","SuburbActive":true,"Area":null,"Agents":[]}]);
var a3burbs = _.filter(allSuburbsList, function(s) { return s.SuburbAreaID === 3; });
// 3 is a test value. All the test suburbs so far fall under area no. 3.
使用此過濾器, a3burbs
作為一個空數組[]
。 如果我作弊並制作過濾器:
var a3burbs = _.filter(allSuburbsList, function(s) { return true; });
然后a3bubrs
出來的精確副本allSuburbsList
,與包括所有的郊區。 我可能做錯了什么? 我使用的是與Underscore.js主頁上指示的語法相同的語法。
順便說一句,我從viewmodel數組屬性填充allSuburbsList
的方式是否與此有關:
var allSuburbsList = new Array(@Html.Raw(JsonConvert.SerializeObject(Model.AllSuburbs)));
出於興趣,我的第一個嘗試是下面的丑陋代碼,但是它起作用了:
var a3burbs = [];
@{for (var i = 0; i < Model.AllSuburbs.Length; i++) {
@:if (allSuburbsList[@i].SuburbAreaID === 3) {
@:a3burbs.push(allSuburbsList[@i]);
};
};
您正在創建一個新數組並傳遞一個數組。
更改為
var allSuburbsList = [{"SuburbID":1,"SuburbAreaID":3,"SuburbName":"Alberante","SuburbActive":true,"Area":null,"Agents":[]},{"SuburbID":4,"SuburbAreaID":3,"SuburbName":"Alberton North","SuburbActive":true,"Area":null,"Agents":[]}];
使用new Array([{}])
,您正在另一個數組中創建一個數組。 只需實例化而無需new Array()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.