[英]Get Object Properties By Predefined Property Names Array
我很確定以前曾回答過這種問題,但我無法很好地進行搜索。
我有一個像這樣的對象數組;
[
{ prop1:"foo1", prop2:"baz1", prop3:"bar1", prop4:"qux1"}
{ prop1:"foo2", prop2:"baz2", prop3:"bar2", prop4:"qux2"}
{ prop1:"foo3", prop2:"baz3", prop3:"bar3", prop4:"qux3"}
]
我有一個數組,用於存儲所需的屬性名稱,例如;
[ "prop1", "prop2" ]
因此,我需要使用另一個數組給定的屬性名稱來過濾數組中的所有對象。 和輸出將是這樣的;
[
{ prop1:"foo1", prop2:"baz1" }
{ prop1:"foo2", prop2:"baz2" }
{ prop1:"foo3", prop2:"baz3" }
]
我如何以適當的方式做到這一點?
您可以使用reduce
方法創建pick
函數,然后將其與map
方法一起使用。
const data = [{ prop1:"foo1", prop2:"baz1", prop3:"bar1", prop4:"qux1"},{ prop1:"foo2", prop2:"baz2", prop3:"bar2", prop4:"qux2"},{ prop1:"foo3", prop2:"baz3", prop3:"bar3", prop4:"qux3"}] const props = [ "prop1", "prop2" ] const pick = (o, p) => p.reduce((r, e) => Object.assign(r, {[e]: o[e]}), {}) const res = data.map(o => pick(o, props)); console.log(res)
您可以使用map()
和reduce()
const data = [ { prop1:"foo1", prop2:"baz1", prop3:"bar1", prop4:"qux1"}, { prop1:"foo2", prop2:"baz2", prop3:"bar2", prop4:"qux2"}, { prop1:"foo3", prop2:"baz3", prop3:"bar3", prop4:"qux3"} ]; const props = [ "prop1", "prop2" ]; const res = data.map(e => props.reduce((a,c) => (a[c] = e[c] , a), {})); console.log(res)
您可以執行以下操作來達到目的:
const data = [ { prop1:"foo1", prop2:"baz1", prop3:"bar1", prop4:"qux1"}, { prop1:"foo2", prop2:"baz2", prop3:"bar2", prop4:"qux2"}, { prop1:"foo3", prop2:"baz3", prop3:"bar3", prop4:"qux3"}, ] const keys = [ "prop1", "prop2" ] let result = data.map((record) => { let obj = {} keys.forEach((key) => { obj[key] = record[key] }) return obj }) console.log(result)
let arr = [ { prop1:"foo1", prop2:"baz1", prop3:"bar1", prop4:"qux1"}, { prop1:"foo2", prop2:"baz2", prop3:"bar2", prop4:"qux2"}, { prop1:"foo3", prop2:"baz3", prop3:"bar3", prop4:"qux3"} ] let filter = [ "prop1", "prop2" ]; let out = [...arr].map(e => Object.keys(e).map(k => !filter.includes(k) ? delete e[k] :true) && e); console.log(out)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.