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