2011-07-27 3 views
0
var srcType = source.slice(source.lastIndexOf('.')); 
//srcType = fileExtension 
var imageFormats = ['.jpg','.png','.gif'], 
videoFormats = ['.ogv','.png','.gif']; 
// two lists, acceptable video/image types 
var htmlSting = '';//initialize the htmlstring 

if (srcType in imageFormats) //heres where my question is!!! 
    htmlString = '<img class="empty" id="it" src="'+source+'"> </img>'; 
else 
    htmlString = '<video class="empty" id="it" src="'+source+'" controls> </img>'; 
// these statements choose the proper media type. 

좋아요, 그래서 heres 거래 : 나는 파일 형식에 따라 html을 선택해야하는 것을 코딩하고 있습니다. (imageFormats의 srcType)을 구현하는 방법은 무엇입니까? 이것은 작동하지 않습니다. for 루프가 필요합니까? 항상 HTML을 사용하거나 HTML에서 사용할 수 있지만 형식을 추가 할 때마다 철저히 구별됩니다. 이유는 for 루프가 좋지 않은 이유는 시간이 중요한 영역에서 소중한 시간을 사용하기 때문입니다.in 연산자를 사용하여 if 문 사용

답변

1

'in'연산은 배열의 값이 아닌 객체의 속성에 대해서만 작동합니다. indexOf (srcType)를 원한다고 생각합니다. 발견되지 않으면 -1을 반환하고, 발견되면 인덱스를 반환합니다.

imageFormats.indexOf('.jpg'); // => 0 
imageFormats.indexOf('.foo'); // => -1 

if(imageFormats.indexOf(srcType)){ } 

var obj = {a: 1}; 
if('a' in obj){ } // evaluates to true 
if('b' in obj){ } // evaluates to false 
+0

고마워요! 방금 객체 배열로 만들었습니다. D –

0

Array 개체에 indexOf을 사용할 수 있습니다. 자바 스크립트 라이브러리에서 사용 가능한 옵션에 대한 자세한 내용은 this question을 참조하십시오.

indexOf은 JavaScript 1.6 (ECMAScript 5th Edition)에서 구할 수 있으며 링크 된 MDC 페이지의 이전 브라우저에는 대체 기능이 있습니다.

왜냐하면 나는 for 루프가 좋지 않다는 이유는 시간이 중요한 영역 인 에서 귀중한 시간을 사용하기 때문입니다.

자세한 내용을 알려 주셔야합니다. 간단한 루프는 시간이 많이 걸리지 않으며 배열에있는 세 요소 집합 만 있으면됩니다. 50 또는 100이 될 가능성이 있더라도 for 루프는별로 문제가되지 않아야합니다.

또한, 당신이하고있는 일 (그리고 언제)의 의도를 말할 수 있다면 더 나은 대답을 얻을 수 있습니다.

+0

도움을 주셔서 감사합니다. 내가 사용하고 싶지 않은 이유는 수백 배의 프로세스를 실행해야하고 느려질 수 있기 때문입니다. 매트가 내가 필요한 것을 대답했다. :) –