2012-05-08 5 views
1

각 자바 스크립트 개체에 추가 경로 정보를 추가하는 가장 좋은 방법은 무엇입니까? 각 JPG 이름 앞에 "assets/img/upload /"와 (과) 비슷합니까? URL = "assets/img/upload/02.jpg"등이 있습니까? 그것은 큰 도움이 될 것입니다! 지금자바 스크립트의 각 개체 값 변경

내 데이터 :

[Object { url="02.jpg"}, 
Object { url="03.jpg"}, 
Object { url="09.jpg"}, 
Object { url="04.jpg"}, 
Object { url="5.jpg"} 
...] 
+0

어떻게이 데이터를 처음부터 받고 있습니까? URL 현재 값 앞에 URL 문자열을 간단하게 추가 할 수 있기 때문에 – Ibu

+0

이것은 합법적 인 javascript 데이터 구조가 아닙니다. 이것은 어디에서 왔습니까? – jfriend00

+0

물어봐 줘서 고마워 ... 그 데이터베이스 테이블에서 나는 변경할 수 없다 ... – Jurudocs

답변

1

루프에 대한 간단한 :

for (var i = 0, LoopTimes = MyArray.length; i < LoopTimes; i++) { 
     MyArray[i].url = "assets/img/upload/" + MyArray[i].url; 
} 

참고 :

for(var i = 0; i < array.length; i++) 
{ 
    array[i].url = "assets/img/upload/" + array[i].url; 
} 
+0

아래 표를 설명하십시오. –

+0

중괄호의 위치는 자동 세미콜론 삽입을 피하기 위해 for 문과 동일한 줄에 있어야합니다. 확실히해야합니다. – frenchie

+0

@frenchie, no. 위의 코드 (또는 유사한 루프 코드)에는 자동 세미콜론 삽입이 없습니다. –

1

이 객체의 배열이 경우 MyArray라고 가정 해

a) 오프닝 컬 y 중괄호는 for 문과 같은 줄에 있습니다. Javascript의 Crokfod에서 유튜브의 좋은 부분을 참조하십시오. 자바 스크립트에서 다음 줄에 여는 중괄호를 두는 것은 감지하기 어려운 몇 가지 이상한 버그를 생성 할 수 있습니다.

b) 매 반복마다 배열 길이를 평가할 필요가 없도록 LoopTimes에 MyArray의 길이를 캐시합니다.

+0

길이를 캐싱 할 때의 영향을 벤치마킹 해 보셨습니까? 최신 JavaScript VM은 점차 최적화되어 VM에 의해 캐싱되거나 인라인 될 수 있습니다. 그렇지 않다고해도 큰 영향을주는 것은 아닙니다. –

+0

벤치마킹되지는 않았지만 적어도 캐싱하지 않는 것보다 빠르거나 빠를 확률은 더 느립니다. 당신은 주제에 구글을 원할지도 모른다. 캐싱 배열 길이는 모범 사례로 간주됩니다. – frenchie

+0

나는 [질문] (http://stackoverflow.com/questions/6261953/do-modern-javascript-jiters-need-array-length-caching-in-loops)을 발견했다. 일부 브라우저에서는 자동으로 최적화 된 것으로 보이지만 다른 브라우저에서는 자동으로 최적화되지 않은 것으로 보입니다. –

0

현대적인 브라우저에서만이 코드를 실행하려는 경우 Array 개체의 map 메서드를 사용할 수 있습니다. 객체의 배열을 가정

는 "배열"이라고

array.map(function(item) {return item.url = "assets/img/upload/" + item.url;}); 

이 배열의 각 요소를 통해 수정 된 URL 필드를 배열에 "항목을"소요되며, 반환 익명 함수를 실행 .

이전 버전의 브라우저에서 코드를 실행하려면 다른 참여자가 제안한 for 루프를 사용하십시오.

+0

나는 이것을 혼란스럽게 생각한다. 'map'의 포인트는 새로운 배열을 반환하는 것입니다. 당신은 실제로 그것을 제자리에서 수정하지 않아도됩니다. 이것이 바로''array.forEach' (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach)입니다. –

+0

'map'은 배열 내용을 조작 할 수 있지만, 새로운 배열을 생성하거나 리턴 할 필요가 없으므로'foreach'가 더 적절할 수 있습니다. –