Я создал сервис утилит для моего углового приложения. У него есть две функции, которые используют очень часто.
Например, у вас есть объект.
Первое рекурсивное получение значения из объекта без выдачи неопределенной ошибки.
{prop: {nestedProp1: {nestedProp2: somevalue}}};
получить nestedProp2 2 без неопределенных проверок.
Второй массив фильтров на основе
[{prop: {nestedProp1: {nestedProp2: somevalue1}}}, {prop: {nestedProp1: {nestedProp2: somevalue2}}}];
Найти объект из массива с помощью nestedProp2 = somevalue2
app.service('UtilService', function(httpService) {
this.mapStringKeyVal = function(map, field) {
var lastIdentifiedVal = null;
var parentVal = map;
field.split('.').forEach(function(val){
if(parentVal[val]){
lastIdentifiedVal = parentVal[val];
parentVal = parentVal[val];
}
});
return lastIdentifiedVal;
}
this.arrayPropFilter = function(array, field,value) {
var lastIdentifiedVal = null;
var mapStringKeyVal = this.mapStringKeyVal;
array.forEach(function(arrayItem){
var valueFound = mapStringKeyVal(arrayItem,field);
if(!lastIdentifiedVal && valueFound && valueFound==value){
lastIdentifiedVal = arrayItem;
}
});
return lastIdentifiedVal;
}});
Для решения текущего вопроса. введите UtilService и позвоните,
UtilService.arrayPropFilter(purposeArray,'purpose','daily');
Или более продвинутый
UtilService.arrayPropFilter(purposeArray,'purpose.nestedProp1.nestedProp2','daily');