[英]how to extract value of two properties into an array from an array of objects
嗨,有一個具有 4 個屬性的對象數組,我只需要從中提取 2 個。
對象的樣本數組
const arr=[
module:{
module1:{
foo: 1,
bar: 2,
anotherfoo: 5
}, module2:{
foo: 3,
bar: 4,
anotherfoo: 8
},module3:{
foo: 7,
bar: 6,
anotherfoo: 3
},module4:{
submodule{
foo: 9,
bar: 0,
anotherfoo: 1
}
}
}];
如何使用 map 將 module1 和 module4.submodule 提取到新數組中。
解構對象時需要提供特定的鍵。
錯誤:
const { module4.submodule } = { module4: { submodule: 4 } };
好的:
const { module4: { submodule } = { module4: { submodule: 4 } };
同樣適用於創建對象,您不能返回{ module4.submodule }
,但您可以返回{ module4Submodule: submodule }
。
以下是一些潛在的解決方案:
輸入:數組,輸出:數組
const arr = [ { module: { module1: { foo: 1, bar: 2, anotherfoo: 5 }, module2: { foo: 3, bar: 4, anotherfoo: 8 }, module3: { foo: 7, bar: 6, anotherfoo: 3 }, module4: { submodule: { foo: 9, bar: 0, anotherfoo: 1 } } } } ]; const newArr = arr.map(({ module: { module1, module4 } }) => ( { module1, module4Submodule: module4.submodule } )); console.log(newArr);
輸入:對象,輸出:對象
const obj = { module: { module1: { foo: 1, bar: 2, anotherfoo: 5 }, module2: { foo: 3, bar: 4, anotherfoo: 8 }, module3: { foo: 7, bar: 6, anotherfoo: 3 }, module4: { submodule: { foo: 9, bar: 0, anotherfoo: 1 } } } }; const { module: { module1, module4: { submodule } } } = obj; const newObj = { module1, module4Submodule: submodule }; console.log(newObj);
您可以為對象實現一個getDotPath
const getDotPath = (dotPath, obj) => { try { return dotPath.split(".").reduce((acc, prop) => acc[prop], obj) } catch (err) { return undefined } } const arr = [ { module: { module1: { foo: 1, bar: 2, anotherfoo: 5, }, module2: { foo: 3, bar: 4, anotherfoo: 8, }, module3: { foo: 7, bar: 6, anotherfoo: 3, }, module4: { submodule: { foo: 9, bar: 0, anotherfoo: 1, }, }, }, }, ] const dotPaths = ["module1", "module4.submodule"] const res = arr.map((el) => dotPaths.map((dotPath) => getDotPath(dotPath, el.module)) ) console.log(res)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.