2016-10-29 5 views
-1

다음 코드를 가지고 있습니다. 수동으로 시도하면 문자열이 어떤 이유로 대체되지 않는지 추측합니다. agreements.replace('{customername}', 'some string'); 모든 것이 잘 작동합니다.루프에서 문자열 바꾸기

var keywords = [ 
    { 
     key: '{customername}', 
     desc: 'Customer Name', 
     map: 'user_name' 
    }, 

    { 
     key: '{vesselname}', 
     desc: 'Customer Vessel Name', 
     map: 'vessel_name' 
    } 
    ]; 

    var parseData = { 
    user_name: "Some name", 
    vessel_name: "Some Vessel", 
    spot_title: "My Spot", 
    today: new Date().toDateString() 
    }; 

    var agreements = "{customername}, some customer, {vesslname} -> here"; 

    for(var i = 0; i < keywords.length; i++) { 
    console.log(keywords[i]['key'], parseData[keywords[i]['map']]); 

    agreements.replace(
     keywords[i]['key'], 
     parseData[keywords[i]['map']] 
    ); 
    } 

    alert(agreements); 

좀 자세한 내용을 추가 해요 무시주세요, 잘 유래는

+0

'.replace'는 새로운 문자열을 반환하고 원래의 문자열을 대체하지 않습니다. 그냥 다시 할당 – Rajesh

+0

@ Rajesh 아 어서, 허. =) – dud3

+0

@Rajesh 감사합니다, 방금 작동했습니다. – dud3

답변

0

변경 코드이에 ... 그것은 흥미로운 요구 사항, 수 :

agreements = agreements.replace(
 
     keywords[i]['key'], 
 
     parseData[keywords[i]['map']] 
 
    );

+0

포인터 만 사용하면 질문에 대답해서는 안됩니다. 명백한 실수. 이미 답변 한 게시물을 검색하고 링크를 공유하십시오. 곧, 투표권을 행사할 수 있습니다. 일단 당신이 그들을 가지고, 그냥 중복으로 표시합니다. 또한 그다지 문제가되지 않으면 답을 삭제하십시오. 나는 그 잘못을 알지 못하지만이 질문은 필요 없다. – Rajesh