嗨,大家好我是新來的角,所以請輕鬆。我注意到,當我嘗試從傳遞給函數的數組中刪除一個對象時,它會從該函數中的數組中刪除該對象,但不是在原始數組中。這讓我感到困惑,因爲我認爲他們是按引用傳遞:從數組刪除對象傳遞爲參數不修改原始數組(角)
function controller($scope, $http) {
var vm = this;
vm.breakfast = [ { id:1, 'name':'fruit' }, { id:2, 'name':'egg' } ];
function removeFromMeal(meal, entryId) {
meal = meal.filter (function (entry) {
return entry['id'] !== entryId;
}
}
function manageEntry(entry) {
...
// Condition to remove meal from vm.breakfast
if (...) { removeFromMeal(vm.breakfast, entry['id']); }
}
}
的問題是,如果我通過爲1的ID的進入manageEntry
和內removeFromMeal
設置斷點,我可以看到,「飯」陣列被成功過濾(即ID爲1的對象從vm.breakfast中刪除)。但是,只要函數返回,函數(vm.breakfast)就像函數從未運行一樣。我確定這個問題與上下文/作用域有關,使用$ apply會在某處出現嗎?
在此先感謝。
要從你需要使用'delete'或'方法Array.splice()'一個數組中刪除的東西。我沒有看到這樣的事情。 'array.filter'返回一個新的數組,它不修改給定的數組。 – Barmar