簡體   English   中英

Underscore.js`filter`不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM