#angularjs #arrays
#angularjs #массивы
Вопрос:
У меня есть массив с двумя ключами, такими как id, и выбранными значениями, как показано ниже
$scope.overview =[{'id':1,'selectedvalues':[a,e,o]},{'id':2,'selectedvalues':[aa,ee,oo]},{'id':3,'selectedvalues':[aaa,eee,ooo]}];
Мне нужно обновить после добавления значений ‘h’ для id = 1, мне нужно обновить мой массив, например
$scope.overview =[{'id':1,'selectedvalues':[a,e,o,h]},{'id':2,'selectedvalues':[aa,ee,oo]},{'id':3,'selectedvalues':[aaa,eee,ooo]}];
в anuglar js есть какой-либо другой способ, которым я в настоящее время занимаюсь в javascript, например
if (this.selectedCategoryOverview.length > 0) {
for (var i in updateDropown) {
if (catid == updateDropown[i].id){
overviewUpdate = false;
updateDropown[i].selectedValues = tempSelectValuesArray;
}
}
}
if(overviewUpdate){
this.selectedCategoryOverview.push({
'id': catid,
'selectedValues': tempSelectValuesArray
});
}
Ответ №1:
Попробуйте использовать array.find
, чтобы найти существующий обзор по идентификатору. Если find
метод возвращает значение — просто обновите значение и добавьте значение в противном случае.
В псевдокоде:
foundObject = array.find()
if(foundObject)
update()
else
pushNew()
Ответ №2:
Это не будет иметь большого значения, если вы сделаете это угловым способом или способом JS, если не задействован DOM, так что вот один угловой способ, который является ничем иным, как закрытым способом JS,
function pushNewArrayValue(value){
angular.forEach($scope.overview,function(arr,i){
arr.selectedValue.push(value);
})
}
pusheNewArrayValue('h')
Ответ №3:
Попробуйте использовать фильтр,
var found;
if (this.selectedCategoryOverview.length > 0) {
found = $filter('filter')($scope.updateDropown, { id: catid });
if (found.length)
$scope.updateDropown = tempSelectValuesArray;
}
if (found amp;amp; found.length) {
this.selectedCategoryOverview.push({
'id': catid,
'selectedValues': tempSelectValuesArray
});
}