簡體   English   中英

使用lodash將子屬性推入父對象

[英]Push child property to parent object using lodash

我有如下嵌套的對象:

 { Campaign_Type: 1 Campaign_TypeFull: {text: "Test my campaign", value: 1} End_Date: "07/26/2019" Live_Date: "07/15/2019" Name: "Death of An Art Collector - Book Signings" Status: "ACTIVE" } 

我需要的輸出是將Campaign_TypeFull子對象轉換為父對象屬性,因為我的反應物料表僅接受平面數組。

 { Campaign_Type: 1 text: "Test my campaign", value: 1, End_Date: "07/26/2019" Live_Date: "07/15/2019" Name: "Death of An Art Collector - Book Signings" Status: "ACTIVE" } 

我嘗試使用flatmap或map,但無法正常工作(我正在使用lodash )。

let griddata = flatMap(tabledata,({ _id,Name, Status,Live_Date, End_Date, Campaign_TypeFull }) => map(Campaign_TypeFull, Campaign_TypeFull => ({...Campaign_TypeFull, _id,Name, Status,Live_Date, End_Date })))

提前致謝。

您可以通過某些對象分解來輕松實現此目的

 const data = { Campaign_Type: 1,Campaign_TypeFull: { text: "Test my campaign",value: 1},End_Date:"07/26/2019",Live_Date: "07/15/2019",Name: "Death of An Art Collector - Book Signings",Status: "ACTIVE"} const flattenCampaign = ({Campaign_TypeFull, ...rest}) => { return Object.assign({}, Campaign_TypeFull, rest); }; console.log(flattenCampaign(data)) 

使用lodash merge,將對象合並在一起,然后擺脫merged屬性。

 const obj = { Campaign_Type: 1, Campaign_TypeFull: { text: "Test my campaign", value: 1 }, End_Date: "07/26/2019", Live_Date: "07/15/2019", Name: "Death of An Art Collector - Book Signings", Status: "ACTIVE", } const flatobj = _.merge(obj, obj.Campaign_TypeFull); delete flatobj.Campaign_TypeFull; console.log(flatobj); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script> 

使用lodash可以使用_.flow()創建一個函數,該函數創建一個沒有屬性的對象(使用_.omit() ),獲取屬性值,然后將它們合並在一起:

 const { flow, over, partialRight: pr, spread, merge, get, omit } = _ const flattenProperty = key => flow( over([pr(omit, key), pr(get, key)]), // get an array of [obj without key, key values] spread(merge) // merge together ) const obj = {"Campaign_Type":1,"Campaign_TypeFull":{"text":"Test my campaign","value":1},"End_Date":"07/26/2019","Live_Date":"07/15/2019","Name":"Death of An Art Collector - Book Signings","Status":"ACTIVE"} const result = flattenProperty('Campaign_TypeFull')(obj) console.log(result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script> 

如果要使用具有多個嵌套屬性的對象,則希望一次進行展平,可以使用_.transform()創建展平的對象函數:

 const flattenObj = obj => _.transform(obj, (r, v, k) => { if(_.isObject(v)) _.assign(r, flattenObj(v)) else r[k] = v }) const obj = {"Campaign_Type":1,"Campaign_TypeFull":{"text":"Test my campaign","value":1},"End_Date":"07/26/2019","Live_Date":"07/15/2019","Name":"Death of An Art Collector - Book Signings","Status":"ACTIVE"} const result = flattenObj(obj) console.log(result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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