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