2015-10-16 87 views
0

我有一個5個對象的數組,我需要循環並返回一個對象數組。但是,當我這樣做時,它只返回最後一個對象5次。angular.for每個返回的對象數組重複同一個對象

我有兩段代碼,它們完全相同,而另一段不工作。

工作代碼:(通過字符串循環,在|上分割並返回數組中的對象);

angular.forEach(exampleString, function(data) { 
    if (data.indexOf('|') !== -1) { 
     data = data.split('|'); 
     //self.model.getDataFromArray()returns an object 
     newArray.push(new self.model.getDataFromArray(data)); 
    } 
}); 

//returns array of objects

不起作用:(遍歷對象,並返回一個對象,但只推最後1到陣列5次)

angular.forEach(exampleObjects, function(data) { 
    this.push(new self.model.getDataFromObject(data)); 
}, newArray); 

有什麼,我」在做或不做這導致這失敗?我可以說的唯一真正的區別是,我從一個分割的字符串開始,而不是從一個對象開始。

只是爲了澄清,如果我做到以下幾點我得到相同的重複:

angular.forEach(exampleObjects, function(data) { 
    newArray.push(new self.model.getDataFromObject(data)); 
}); 
+0

是exampleString一個字符串?或者它是一個數組?你的評估「通過字符串循環」是不正確的,你的foreach的第一個參數應該是你迭代的對象/數組。您不會迭代字符串值。 – sksallaj

+0

@sksallaj對不起,這是一串字符串。 – gardni

回答

0

我想在你的getDataFromObject方法問題的規定。該方法中的代碼是什麼?

+0

'getDataFromObject(data){ var obj = {}; obj =數據; obj.attr1 = data.attr1; obj.attr2 = data.attr2; return obj; } 只是簡單的映射,與其他工作方法完全一樣 – gardni

+0

似乎對我有用的是將var'obj = {};'改爲'self.obj = {};'不知道爲什麼它會使區別 – gardni