繁体   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