2016-03-09 79 views
0

我剛來JavaScript的世界只是想澄清這一點,因爲我使用AngularJs客戶端。下面的代碼工作正常,但問題是,有沒有辦法實現以下結果與角環forEach如何將for loop轉換爲AngularJs forEach?

ctrl.js

for (var i = 0; i < selectedOwners.length; i++) { 
    if (selectedOwners[i].workerKey === obj.workerKey) { 
     selectedOwners.splice(i, 1); 
     break; 
    } 
} 
+1

您可以嘗試JavaScript的'.filter()' – elclanrs

+0

只是讓你知道,for循環更好的性能。另外,這也許是一個本地js forEach。 – Rooster

回答

1

這應該工作:

angular.forEach(selectedOwners, function(owner, $index) { 
    if (owner.workerKey === obj.workerKey) { 
     selectedOwners.splice($index, 1); 
     break; 
    } 
}); 
+0

'break'不會像你期待的'forEach'那樣工作。改爲使用返回。 –

+0

完美的非常感謝,我與angularJs有相同的結果。 – hussain

0

過濾的陣列的最簡單的方法是使用天然的javascript .filter()函數。

var filteredOwners = selectedOwners.filter(function(owner) { 
    return owner.workerKey !== obj.workerKey; 
}); 
+0

一旦我們返回,它不工作,我們用filteredOwners做什麼? – hussain

+0

filteredOwners是一個數組,其中包含滿足返回條件的原始selectedOwners數組項的子集。什麼不起作用?過濾器是否爲空? –

0

你可以做這樣的事情,而不使用angular.forEach

var workerIndex = selectedOwners.map(function(owner) { return owner.workerKey; }) 
     .indexOf(obj.workerKey); 

selectedOwners.splice(workerIndex, 1);