![](/img/trans.png)
[英]JavaScript: Split objects in array based on space in object property
[英]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.