如何根据条件将对象拆分为对象数组。
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 :(得分: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:要测试,请运行上面的代码并检查开发人员工具控制台以查看新的数组输出。