Я следующий фрагмент кода я использую, чтобы выбрать, какие пригороды из списка выбрал пользователь (с неактуальной кода опущены):Underscore.js `не filter` работает
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.
Btw, будет так, как я заполнить allSuburbsList
из ViewModel собственности массива имеют ничего общего с этим:
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]);
};
};
Это не буквальный JS, он отображается кодом Razor, который я добавил в конце моего вопроса. Я не могу изменить заявление, которое вы цитируете. – ProfK
В сценарии абсолютного * худшего * вы можете сделать '_.filter (allSuburbsList [0], ...', но я бы ** сильно ** рекомендовал вам найти способ изменить сгенерированный код. – Paarth
@ProfK Да вы можете. var allSuburbsList = @ Html.Raw (JsonConvert.SerializeObject (Model.AllSuburbs)); 'Просто удалите часть' new Array'. –