Одним из возможных решений является использование thisArg
из Array.filter () .
thisArg : Необязательно - значение для использования в качестве this
при выполнении обратного вызова.
В частности, говоря о функции стрелки, которую вы пытаетесь преобразовать, вы можете передать контекст this
из обратного вызова success
для использования внутри фильтра () as this
:
var count = aCharacteristics.filter(function(obj)
{
var equipmentNum = this.getView().getBindingContext().getProperty("EquipmentNumber");
return obj.GroupId === aIconTabItems[j].getKey() && obj.EquipmentNumber === equipmentNum;
}, this /* Here we use the thisArg of filter */).length;
Другой способ - просто определить переменную вне loop
, как вы делаете это с переменной aIconTabItems
:
let aIconTabItems = this.byId('iconTabBar').getItems();
let aCharacteristics = oData.results;
let equipmentNum = this.getView().getBindingContext().getProperty('EquipmentNumber');
for (var j = 0; j < aIconTabItems.length; j++)
{
let count = aCharacteristics.filter(function(obj)
{
return obj.GroupId === aIconTabItems[j].getKey() &&
obj.EquipmentNumber === equipmentNum;
}).length;
oViewModel.setProperty(`/${aIconTabItems[j].getKey()}`, count);
}