jscript에서 음의 배열 indeces를 가로 지릅니다
-
02-07-2019 - |
문제
jscript에 희소 배열이 있으며, 널이 아닌 요소는 음수 및 양수 지수 모두에서 발생합니다. in in loop을 사용하려고 할 때 가장 낮은 (음수) 색인에서 가장 높은 양의 지수로 배열을 가로지 지 않습니다. 대신 요소를 추가하는 순서대로 배열을 반환합니다. 열거는 작동하지 않습니다. 내가 그렇게 할 수있는 방법이 있습니까?
예시
arrName = new Array();
arrName[-10] = "A";
arrName[20] = "B";
arrName[10] = "C";
루프를 통과 할 때, 그것은 나에게 C를 주어야한다.
해결책
기술적으로 "A"는 부정적인 색인을 가질 수 없기 때문에 배열에 전혀 없습니다. Arrname 객체의 멤버 일뿐입니다. Arrname을 확인하면 길이가 21 (0,1,2, ..., 20)임을 알 수 있습니다. 이와 같은 것이 효과가 있어야합니다.
<script type="text/javascript">
//define and initialize your object/hastable
var obj = {};
obj[20] = 'C';
obj[10] = 'B';
obj[-10] = 'A';
// get the indexes and sort them
var indexes = [];
for(var i in obj){
indexes.push(i);
}
indexes.sort(function(a,b){
return a-b;
});
// write the values to the page in index order (increasing)
for(var i=0,l=indexes.length; i<l; i++){
document.write(obj[indexes[i]] + ' ');
}
// Should print out as "A B C" to the page
</script>
다른 팁
당신은 그 사이의 경계에 부딪 치고 있습니다 Array
모래 Object
JavaScript에서. 배열 요소는 0에서 4294967294 사이의 정수 (최대 서명되지 않은 32 비트 정수 -1)의 정수에 의해 액세스됩니다. 객체 속성은 이름별로 액세스합니다. -10은 유효한 서수 번호가 아니기 때문에 이름으로 해석됩니다. 더 간단한 예는 다음과 같습니다.
var arr = new Array();
arr[0] = 'A';
arr[1] = 'B';
arr[-1] = 'C';
arr.length
결과는 2입니다 - 배열에는 인덱스 0과 1에 두 개의 요소 만 있습니다.
제휴하지 않습니다 StackOverflow