繁体   English   中英

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

[英]Split an object into array of objects based on a condition in 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)?

这是您可以尝试的一堆代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM