2016-03-27 6 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)元のプロパティ名の最初の部分か2番目の部分かに基づいて、値をnewObjectに入れます。

5)新しいオブジェクトを今度はアイテムとともに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

ありがとう、これは私を助けました。 –