2016-03-27 56 views
0

如何根據條件將對象分割爲對象數組。基於JavaScript中的條件將對象分割爲對象陣列

oldObject = {"Chicago, IL:Myrtle Beach, SC": 0.005340186908091907, 
      "Portsmouth, NH:Rock Hill, SC": 0.0063224791225441205, 
      "Columbia, SC:Laconia, NH": 0.006360767389277389, 
      "Council Bluffs, IA:Derry, NH": 0.0016636141225441225} 

上面是給定的示例對象。我想製作一組這樣的物體,

newArray = [{"city":"Chicago", "similarTo":"Myrtle"}, 
     {"city":"Portsmouth", "similarTo":"Rock Hill"}, 
     {"city":"Columbia", "similarTo":"Laconia"}, 
     {"city":"Council Bluffs", "similarTo":"Derry"}] 

我一直在用我的頭撓了一會兒。我怎樣才能得到上面的數組(newArray)?

回答

0

這裏有一堆你可以嘗試的代碼。

1)遍歷oldObject並獲取屬性的名稱。

2)拆分名到基於一個數組「:」字符,因爲它分開城市

3)轉到了新的數組,而不是分裂它的「」字符(以得到狀態)。

4)將值放入newObject中,根據它是原始屬性名稱的第一部分還是第二部分。

5)將newObject,現在與項目,推入一個newArray。

基本上,這解析名稱和做一些數組分裂,以獲得正確的值。希望它能幫助你,並幫助你理解。

var oldObject = {"Chicago, IL:Myrtle Beach, SC": 0.005340186908091907, 
 
      "Portsmouth, NH:Rock Hill, SC": 0.0063224791225441205, 
 
      "Columbia, SC:Laconia, NH": 0.006360767389277389, 
 
      "Council Bluffs, IA:Derry, NH": 0.0016636141225441225}; 
 
var newArray = []; 
 

 
for (object in oldObject) { 
 
    var thisObjectName = object; 
 
    var thisObjectAsArray = thisObjectName.split(':'); 
 
    var newObject = { 
 
    'city': '', 
 
    'similar_to': '' 
 
    }; 
 
    thisObjectAsArray.forEach(function(element,index,array) { 
 
     var thisObjectNameAsArray = element.split(','); 
 
     var thisObjectNameCity = thisObjectNameAsArray[0]; 
 
     if(index===0) { 
 
     newObject.city = thisObjectNameCity; 
 
     } else if(index===1) { 
 
     newObject.similar_to = thisObjectNameCity; 
 
     } 
 
    }); 
 
    newArray.push(newObject); 
 
} 
 
console.log(newArray);

PS:測試,運行上面的代碼,並檢查您的開發人員工具控制檯看到新的陣列輸出。

+0

非常感謝,這對我有很大的幫助。 –