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 主页上显示的语法相同。

顺便说一句,我从视图模型数组 属性 填充 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()

的情况下实例化