2013-12-17 69 views
0

我有幾條記錄rec1和rec2。根據條件將一個地圖的值設置爲其他地圖

兩者都有一個共同的鍵/值name1。

當兩個記錄中的name1相等時,我需要將rec2的幾個值設置爲rec1。

我把它們分成兩個不同的迴路如下

rec1.each{r1-> each 
    rec2.each{r2-> each 
     if(r2.name1 == r1.name1){ 
     r1.name2 = r2.name2 
     r1.name3 = r2.name3 
     } 
    } 
} 

是否有這樣做

例沒有更好的辦法:(對不起,我只是粘貼的內容)

recoRecord :[[「CHANNEL」:INBOUND,「STOCK_LEVEL」:2410.0, 「OFFER_TARIFF_ID」:FBUN-MVP-VME-VIRGIN-31-24-04,「P_BAND」:P4-6, 「CONTRACT_LENGTH」:24.0, INCENTIVE_POINTS「:10.0, 「HANDSET_PKEY_ID」:SAM-STD-I9300-1, 「CUST_TYPE」:MEDIA]]

記錄:[[ 「MEDIA_SUBSIDY_VALUE」:0.0 「CREDIT_CLASS」:C5, 「DOM_OTHER_MARGIN」:0.0, 「isBatchTerminator」 :假, 「CALL_GROUP_DESC」:組合, 「DM」:20.0, 「BLACKBERRY_IND」:N, 「PREFERRED_BLACKBERRY」:N, 「ERROR_ID」:0 「CUST_TYPE」:MEDIA, 「TARIFF_MRC」:30.99,「MOST_USED_TAC 「:35961404, 」FORM_FACTOR「:空, 」CAMERA_IND「:NULL, 」NEW_MARGIN「:22.272501, 」MODEL「:空, 」IS_MMS_ALLOWANCE「:N, 」ACTIVE_HANDSET_BANDS「 :, 」CUST_OUT_OF_ALLOWANCE_PLAN「:JV15,」 OOB_DOM_VOICE 「:0.0, 」OOB_DOM_SMS「:0.0,」VM_CUST_FLAG「:Y,」IB_DATA「:0.0, 「CHANNEL_FLAG」:入站, 「SMS_ALLOWANCE」:5000.0, 「ROAM_SMS_MARGIN」:0.0, 「TARIFF_DESC」:30.99維京媒體24個月+ 1GB 1300mins, 「MARGIN_CHANGE_PCT」:0.12691319, 「OFFER_VOICE_ALLOWANCE」:600, 「MAKE」 :空, 「IS_ONNET_ALLOWANCE」:Y, 「OFFER_CONTRACT_TERM」:24.0, 「PREFERRED_MINUTES」:1300, 「PREFERRED_ON_NET」:Y, 「MOST_USED_IMEI」:359614048625860, 「打折」:3.0, 「NetPresentValue」:1.15,「RecInd 「:1, 「WIFI_IND」:NULL, 「IPHONE_IND」:N, 「OFFER_TARIFF_ID」:FBUN-MVP-VME-VIRGIN-31-24-04, 「IncentivePoints」: - 1.0]

時兩個記錄中的OFFER_TARIFF_ID都是我想要的將第一條記錄的幾個值設置爲第二條記錄

+0

你能舉一些例子輸入和預期輸出嗎? –

+0

當然,將編輯我的問題 – Techie

+0

此外,我已經給你的答案我以前的問題之一的評論...你可以請檢查http://stackoverflow.com/questions/20610469/pulling-the-list-of-values從鍵列表 – Techie

回答

0

您不需要遍歷這兩個映射。只需要檢查特定鍵匹配或不匹配的值。

if(r2.'OFFER_TARIFF_ID' == r1.'OFFER_TARIFF_ID'){ 
    //push the required entries from r1 to r2 
} 

雖然在你的編輯,我沒有看到記錄一個有效的數據結構,我認爲r1和r2爲地圖。

+0

是的,他們是地圖... – Techie

+0

感謝您的答覆 – Techie

相關問題