[英]Convert Nested object into custom array of objects: Javascript
我有一組看起來像這樣的對象
const test = {
a: { name: "A", selected: [1, 2, 3], display: [1, 2, 3] },
b: { name: "B", selected: [4, 5, 6], display: [4, 5, 6] },
c: { name: "C", selected: [7, 8, 9], display: [7, 8, 9] },
d: { name: "D", selected: [], display: [] }
};
我希望將上面的內容轉換如下
const output = [
{ field: "A", selectedValues: [1, 2, 3] },
{ field: "B", selectedValues: [4, 5, 6] },
{ field: "C", selectedValues: [7, 8, 9] }
];
基本上鍵入輸入 object 作為該數組最后 object 中的field
並在輸入 object 中selected
應該作為最終 object 中的selectedValues
。注意只有選擇了一些條目的selected
應該放入最終數組
此外,當輸入 object 中的所有對象都selected
為空時,則只返回空數組,否則返回上面的 output。
我試過的代碼
const result = Object.entries(test).map(([name, v]) => ({
field: name,
selectedValues: v
}));
console.log(result);
因為你想要
selected in input object 應作為最終 object 中的 selectedValues。
您應該在映射時導航到.selected
屬性(子數組),而不是引用整個 object。之后,根據該數組是否包含任何值進行過濾。
const test = { a: { name: "A", selected: [1, 2, 3], display: [1, 2, 3] }, b: { name: "B", selected: [4, 5, 6], display: [4, 5, 6] }, c: { name: "C", selected: [7, 8, 9], display: [7, 8, 9] }, d: { name: "D", selected: [], display: [] } }; const result = Object.entries(test).map(([name, obj]) => ({ field: name, selectedValues: obj.selected })).filter(({ selectedValues }) => selectedValues.length); console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.