2014-09-03 55 views
0

我想用另一個對象替換對象$ scope.users的數組中的元素。 我當時就想,這樣做:對象在數組中但indexOf找不到dit

步驟1中找到我想要更換

var myValue; 
myValue = $filter('filter')($scope.users,{email: "email"}); 

的對象時,它給了我,我想

對象

第2步編輯:myvalue的現在包含確切的對象從數組$ scope.users中提取,所以現在我要去查找它並找到它的索引。

var index = $scope.users.indexOf(myValue); 

,這將返回-1,所以錯誤...

$ scope.users就是這樣

[Object { id=10, username="Eagle1", username_canonical="eagle1", more...}, Object { id=11, username="Pedro", username_canonical="pedro", more...}, Object { id=12, username="Carine", username_canonical="carine", more...}, Object { id=16, username="stephane", username_canonical="stephane", more...}, Object { id=17, username="throwError", username_canonical="throwerror", more...}] 

和過濾後myvalue的是這樣的:

[Object { id=17, username="throwError", username_canonical="throwerror", more...}] 

編輯:我解決了這樣的問題:

var index = $scope.users.map(function(e){return e.keytofind}).indexOf("keytofind"); 
+0

什麼是$ scope.users?什麼是myValue? – Donal 2014-09-03 11:04:44

+0

你能用一個實際場景編輯你的問題:輸入 - >預期輸出? – Wawy 2014-09-03 11:11:27

+0

我添加了一些數據結構 – Eagle1 2014-09-03 19:47:02

回答

1

我認爲它是這樣的:

var elementPos = array.map($filter('filter')($scope.users,{email: "email"})) 
         .indexOf(idYourAreLookingFor); 
var objectFound = array[elementPos]; 
+0

假設「$ scope.users」是數組。 – Margus 2014-09-03 11:11:58

+0

如果$ scope.users不是一個數組我會有JS錯誤不是嗎? – Eagle1 2014-09-03 14:33:41

+0

不是我所需要的。我發現解決方案在其他地方,但你的實際上是正確的 – Eagle1 2014-09-06 17:07:06