여러 문자열을 사용하여 동일한 작업을 수행하고 싶습니다. 나는 이런 식으로 그것을 할 싶습니다 for ...의 사용은 허용됩니까?
names = ["NOTE", "REPLICA", "HINT", "VIEW"];
for (name in names) {
name = names[name];
//do stuff
}
은 그 때 나는
this를 참조하십시오. 그것은 여전히 괜찮은가요?
여러 문자열을 사용하여 동일한 작업을 수행하고 싶습니다. 나는 이런 식으로 그것을 할 싶습니다 for ...의 사용은 허용됩니까?
names = ["NOTE", "REPLICA", "HINT", "VIEW"];
for (name in names) {
name = names[name];
//do stuff
}
은 그 때 나는
this를 참조하십시오. 그것은 여전히 괜찮은가요?
이 다수 사용하여 배열을 통해 이동하는 것이 좋습니다 :
var i = 0;
for(i=0;i<names.length;i++){
...
}
이미 언급 한 링크를 문서를 그 for ... in
다른에 표시됩니다 Array.prototype으로 또는 Object.prototype에에 물건을 포함하여 다른 개체 속성 사용하지 않는 이유는 .. for for Array의 속도가 느리다는 것입니다.
그 기사에서는 배열의 길이가 크지 만 몇 가지 항목 만 설정되어있는 경우 for ... in
이 더 빠를 수있는 경우를 언급합니다.
var stuff, index;
stuff = [];
stuff[0] = "zero";
stuff[9999] = "nine thousand nine hundred and ninety-nine";
stuff.name = "foo";
for (index in stuff)
{
if (stuff.hasOwnProperty(index) && String(Number(index)) === index) {
console.log("stuff[" + index + "] = " + stuff[index]);
}
}
그것은 단지 for loop
를 사용하는 것보다 훨씬 느리다 :이 경우에 나는 속성이 숫자 인 경우 hasOwnProperty
및 확인과 for ... in
을 사용할 수있는 것 같아요.
내 브라우저 (Google 크롬 28.0.1500.72)에서 86% slower
주위.
체크 아웃이 benchmark을 만들었습니다.
for..in
동안 루프 만 110,772 ops/sec
(여전히 빠른)에서 실행 for
루프는 내가 일반적으로 objects
으로 for..in
루프를 사용 791,792 ops/sec
에 달렸다. 나는 그들이 그것이 실제로 무엇인지 믿습니다.
사용하려는 모든 환경에서 예상대로 작동하는 경우 정상입니다. –
키는 여기에 있습니다 : _ "'for..in'은 배열의 인덱스가 아닌 객체의 열거 가능 속성 이름을 반복합니다. 따라서 for 루프가 더 좋습니다. 'for..in'을 사용하여 배열을 반복하는 것은 좋은 습관으로 간주되지 않습니다. – elclanrs
알 수없는 환경에서 작업하기 위해 모듈을 함께 전달할 것입니다. – Glycan