2013-12-17 3 views
0

У меня есть пара записей rec1 и rec2.установка значений одной карты другим в зависимости от состояния

Оба имеют общий ключ/значение name1.

, когда имя1 равно в обеих записях, тогда мне нужно установить несколько значений 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": С5, "DOM_OTHER_MARGIN": 0.0, "isBatchTerminator" ложь, "CALL_GROUP_DESC": Совмещенный, "ДМ": 20,0, "BLACKBERRY_IND": Н, "PREFERRED_BLACKBERRY": Н, "ERROR_ID": 0, "CUST_TYPE": СМИ, "TARIFF_MRC": 30.99, «MOST_USED_TAC ": 35961404, "FORM_FACTOR": нулевой, "CAMERA_IND": нулевой, "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": Inbound, "SMS_ALLOWANCE": 5000,0, "ROAM_SMS_MARGIN": 0,0, "TARIFF_DESC": 30,99 Virgin Media 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": Н, "OFFER_TARIFF_ID": FBUN-МВП-VME-ВИРГИНСКИЕ-31-24-04, "IncentivePoints": - 1.0]

, когда OFFER_TARIFF_ID в обеих записях то же самое, что я хотел бы для установки нескольких значений первой записи во вторую запись

+0

Можете ли вы привести пример ввода и ожидаемый выход? –

+0

уверен, отредактировал мой вопрос – Techie

+0

Также я дал комментарий к одному из моих предыдущих вопросов, на который вы ответили ... не могли бы вы проверить http://stackoverflow.com/questions/20610469/pulling-the-list-of-values -from-the-list-of-keys – 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

Смежные вопросы