[英]How to split javascript object with the same attribute into array
[英]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.