簡體   English   中英

如何根據數組屬性的索引拆分和合並 javascript object

[英]How to split and merge javascript object with respect to index of array attribute

如何根據數組屬性的索引拆分和合並 javascript object。

我有這樣的領域。

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

我想像這樣從這里導出兩個。 Output:-

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

所以當我使用我的代碼時,我得到 4 個 arrays 而不是兩個。 任何人都可以幫助我如何合並索引。

這是我嘗試過的:

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);

你可以map吧。 這是我的嘗試。 我假設類別和級別的長度相同。

 var myFields = { Country: "USA", State: "DC", Cataogry: ["Value1", "Value2"], Level: ["Level1", "Level2"] }; var result = myFields.Cataogry.map((Cataogry, i) => ({...myFields, Cataogry, Level: myFields["Level"][i] })); console.log(result);

您可以采用動態方法並迭代所有條目並查看value

如果value是一個數組,則 map 值與 object 在同一索引處或以第一個 object 作為模式。

如果value不是數組,則 map 累加器並將實際的鍵/值對添加到所有對象。

 var object = { Country: "USA", State: "DC", Category: ["Value1", "Value2"], Level: ["Level1", "Level2"] }, result = Object.entries(object).reduce( (r, [key, value]) => Array.isArray(value)? value.map((v, i) => ({...(r[i] || r[0]), [key]: v })): r.map(o => ({...o, [key]: value })), [{}] ); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM