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

Split an object into array of objects based on a condition in JavaScript

本文关键字:对象 拆分 数组 条件 JavaScript 根据      更新时间:2023-09-26

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

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:要进行测试,请运行上面的代码并检查您的Developer Tools控制台以查看新的数组输出。