javascript - 如何根据数组属性的索引拆分和合并javascript对象

标签 javascript arrays object data-structures

如何根据数组属性的索引拆分和合并 javascript 对象。

我有这样的字段。

var myFields = {
  Country: "USA",
  State: "DC",
  Cataogry: ["Value1", "Value2"],
  Level: ["Level1", "Level2"]
};

我想像这样从这里导出两个。输出:-

var fields = [
  { Country: "USA", State: "DC", Cataogry: "Value1", Level: "Level1" },
  { Country: "USA", State: "DC", Cataogry: "Value2", Level: "Level2" }
];

所以当我使用我的代码时,我得到了 4 个数组而不是两个。任何人都可以帮助我如何合并索引。

这是我尝试过的:

var myObj = {};

for (var i = 0; i < fields.length; i++) {
  myObj[fields[i].key] = fields[i].Value;
}

var myObjList = [];
var listFlag = false;
Object.keys(myObj).forEach(function(key) {
  if (Array.isArray(myObj[key])) {
    listFlag = true;
    myObj[key].forEach(function(el) {
      var objCopy = JSON.parse(JSON.stringify(myObj));
      objCopy[key] = el;
      myObjList.push(objCopy);
    });
  }
});

if (!listFlag) {
  myObjList.push(myObj);
}

最佳答案

你可以使用 map 方法。

var myFields = {
    "Country" : "USA",
    "State" : "DC",
    "Cataogry" : ["Value1","Value2"],
    "Level" : ["Level1","Level2"]
}

var fields = myFields.Cataogry.map((item, index) => ({
  Country : myFields.Country,
  State : myFields.State,
  Cataogry: myFields.Cataogry[index],
  Level : myFields.Level[index]
} ));

console.log(fields);

关于javascript - 如何根据数组属性的索引拆分和合并javascript对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62661125/

相关文章:

javascript - 如何在方法 node.js 中获取方法名称

C - fprintf() & printf() 删除数组元素内存

javascript - 从 'onclick' 部分值中查找并单击一个项目

javascript - 如何在 javascript 中合并和解压缩(.zip、.z01、.z02)(仅限客户端)?

javascript - 单击以显示更多内容 - 2 列

c++ - C++中的"Free"数组元素

arrays - Javascript 列出数组中包含嵌套数组中的值的对象

javascript - 为什么这个类似数组的对象会有这样的行为?

javascript - 在 Javascript 中访问对象数组(或数组数组)

python - 在排序列表中插入自定义对象