2016-04-22 119 views
0

我有一些數據從MVC控制器來在下面的格式:如何將數組的對象轉換爲對象

{id: Array[3], city: Array[3]}

我想這些數據轉換成

[Object, Object, Object]

其將具有結構Object0{id, city}Object1{id, city},Object2{id, city}

我想下面的方法,但沒有工作了

angular.forEach(data, function(){ 

    vm.Cities = { 
     id :data.citiesIDs, 
     city : data.citiesStr 
    } 

}); 

任何人都可以請給我一個提示,在我錯了或什麼是實現這一目標的最佳途徑。提前致謝。

+0

您聲明您需要輸出,但是是一個包含3個對象的數組,但您的初始對象看起來像只在每個數組中有_two_項,其中第三個對象來自哪裏? – Himmel

+0

您每次迭代都將新對象分配給vm.Cities。如果vm.Cities是一個數組,則應該將新對象拖放到它上面。 – spaceman

+0

你能給我一個清晰的控制器給你的東西 - 它是一個對象或者一個對象,一個城市,id - 鍵的數組,並且你想展開數組並且根據它們返回對象。看看我在說什麼? –

回答

1

你並不真的需要Angular,簡單的Javascript也可以。

function transform(object) { 
    var result = []; 
    for (var i = 0; i < object.id.length; i++) { 
    result.push({ 
     id: object.id[i], 
     city: object.city[i] 
    }); 
    } 
    return result; 
} 

然後,你可以打電話給你的幫助與您的數據:

var list = transform(data); // <-- list of (id,city) objects 

牢記函數假設你都和id陣列city的長度相同的(這真的就沒有意義如果他們不是),但對於情況下它們是相同的長度不,你想稍作改變你的for循環:

var maxLen = Math.max(object.id.length, object.city.length); 
for (var i = 0; i < maxLen; i++) 
+0

謝謝!有效 :) – logan

0

這是一個簡單的JS operati on和here is the demo

// Assuming obj is defined and both obj.id and obj.city are arrays 

var obj = { 
    id: [25, 82, 188, 141], 
    city: ['Tokyo', 'Munich', 'Los Angeles', 'Sao Paolo'], 
}; 

var max = Math.max(obj.id.length, obj.city.length); 

var results = []; 

for(var i = 0; i < max; i++) { 
    var converted = { 
     id: obj.id[i] ? obj.id[i] : null, 
     city: obj.city[i] ? obj.city[i] : null 
    }; 
    results.push(converted); 
} 

console.log('Coverted array', results); 
0

很簡單的例子。迭代其中一個數組並通過索引從另一個數組中獲取。

var cities = [] 
angular.forEach(data.id, function(id, index) { 
    var city = {id: id, city: data.city[index]}; 
    cities.push(city); 
}); 
0

迭代器可以幫助你。例如:

var data = {id: [1,2], city: ['Curitiba','São Paulo']}; 
    var array = []; 
    for(var prop in data){ 
     var length = data[prop].length; 
     for(var z = 0; z < length; z++){ 
      if(!array.hasOwnProperty(z)){ 
       array[z] = {}; 
      } 
      array[z][prop] = data[prop][z]; 
     } 
    } 
    console.log(array);// [Object{city:'Curitiba',id:1},Object{city:'São Paulo',id:2}] 
相關問題