2013-07-12 2 views
0

각 함수 underscore.js를 사용하여 목록의 각 항목에서 문자열 대체를 호출하는 함수가 있습니다. (사실 한 쌍의 목록) :일괄 교체 기능이 작동하지 않는 이유는 무엇입니까?

각 기능을 밟아서 문자열이 바뀌고 다시 양동이에 할당 될 수 있습니다. 그러나 반환 값을 얻을 때 대상 객체는 각각의 문자열에서 여전히 REPLACE로 변경되지 않습니다.

나는 바보 같은 짓을하고있는 것이 틀림 없습니다.하지만 어떤 이유에서든 나는 그것을 볼 수 없습니다. 사전에

감사합니다!

+2

버킷은 단지 문자열이므로 참조가 아니므로 배열에 저장된 내용은 변경되지 않습니다. 배열을 인덱스별로 직접 변경해야합니다. –

답변

4

당신은 다른 인수의 사용을해야 _.each 콜백을 제공합니다

_.each(targets.counters, 
     function(bucket, i, target) { 
      target[i] = bucket.replace("REPLACE", node); 
     }); 

그 이유는 bucket 자체가 문자열에 대한 참조 점이다; 해당 참조를 자신의 것으로 바꾸면 컬렉션에 저장된 참조가 대체되지 않습니다 (수정되지 않은 버전을 계속 가리킴). 반대로 target[i]은 컬렉션을 업데이트하고 콜백이 반환 된 후에도 변경 사항을 볼 수 있도록합니다.

+0

Brilliant! 고맙습니다! – RockyMountainHigh

관련 문제