我有几个记录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_SUBSIDY_VALUE”:0.0,“CREDIT_CLASS”:C5, “DOM_OTHER_MARGIN”:0.0,“isBatchTerminator”:false, “CALL_GROUP_DESC”:COMBINED,“DM”:20.0,“BLACKBERRY_IND”:N, “PREFERRED_BLACKBERRY”:N,“ERROR_ID”:0,“CUST_TYPE”:媒体, “TARIFF_MRC”:30.99,“MOST_USED_TAC”:35961404,“FORM_FACTOR”:null, “CAMERA_IND”:null,“NEW_MARGIN”:22.272501,“MODEL”:null, “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”:INBOUND,“SMS_ALLOWANCE”:5000.0,“ROAM_SMS_MARGIN”:0.0, “TARIFF_DESC”:30.99 Virgin Media 24个月+ 1GB 1300分钟, “MARGIN_CHANGE_PCT”:0.12691319,“OFFER_VOICE_ALLOWANCE”:600, “MAKE”:null,“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处女-31-24-04, “IncentivePoints”: - 1.0]
当两个记录中的OFFER_TARIFF_ID相同时,我想将第一个记录的几个值设置为第二个记录
答案 0 :(得分:0)
您无需迭代这两个地图。只需要检查特定键匹配的值是否匹配。
if(r2.'OFFER_TARIFF_ID' == r1.'OFFER_TARIFF_ID'){
//push the required entries from r1 to r2
}
虽然在编辑中,我没有看到记录的有效数据结构,但我将r1和r2视为地图。