簡體   English   中英

如何將數組對象轉換為對象

[英]How to convert Object of Arrays to Objects

我有一些來自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
    }

});

任何人都可以給我一個提示,告訴我我要去哪里了或者實現這一目標的最佳方法是什么。 提前致謝。

您實際上並不需要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

請記住,該函數假定您的idcity數組都具有相同的長度(如果它們的長度不同,這實際上是沒有意義的),但是對於它們的長度不相同的情況,則需要在您的for循環中做一個小改動:

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

這是一個簡單的JS操作, 這是演示

// 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);

非常簡單的例子。 遍歷一個數組,並通過索引從另一個數組中獲取。

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

迭代器可以為您提供幫助。 例如:

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}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM