根据JavaScript中的条件将对象拆分为对象数组

时间:2016-03-27 07:37:15

标签: javascript arrays

如何根据条件将对象拆分为对象数组。

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)?

1 个答案:

答案 0 :(得分: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:要测试,请运行上面的代码并检查开发人员工具控制台以查看新的数组输出。