簡體   English   中英

將嵌套的 object 轉換為自定義對象數組:Javascript

[英]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.

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