2010-08-05 3 views
0

좋아요, 배열을 가져 오는 중입니다. 유일한 차이점은 인덱스가 두 개의 참조 점을 사용하여 결정된 임의의 숫자로 대체되었습니다. (각 배열에 하나씩). 이렇게하면 음수 인덱스가 만들어 지므로 스크립트가 작동하지 않으면 유용하게 사용됩니다. 두 번째 배열에 음의 색인과 작업이있는 방법이 있습니까, 아니면 모두 함께 다른 방법을 사용해야합니까? 간단한 코드로 코드를 다시 작성했습니다.javascript - 하나의 배열을 음수 인덱스 오프셋이있는 두 번째 배열에 매핑하십시오.

var firstArray = { 
    field: [ 1, 2, 3, 4, 5], 
    referenceIndex : 2 
}; 

var secondArray = { 
    referenceIndex: 1, 
    offset: 0, 
    field : {} 
}; 

// Create secondArray.field by finding the offset. 
secondArray.offset = firstArray.referenceIndex - secondArray.referenceIndex; 

for (i=0; i < firstArray.field.length; i++){ 
    alert([i - secondArray.offset, firstArray.field[i]].join(" ")); 
    secondArray.field[i - secondArray.offset] = firstArray.field[i]; //creates a negative index. 
} 

답변

3

배열은 양의 정수만 인덱스로 가질 수 있습니다. 그러나 객체이기도하므로 모든 문자열을 속성으로 사용할 수 있습니다. 그래서 어떤 의미에서는 '작동'하지만 올바른 값을 갖기 위해 Array#length을 신뢰하지 마십시오.

var arr = [1,2,3]; 
arr.length //3 
arr[10] = 10; 
arr.length //11 
arr["blah"] = 100; 
arr.length //still 11 
arr[-1] = 200; 
arr.length //still 11 
나는이 훌륭한 문서를 가리 키도록하고 싶습니다

-http://javascriptweblog.wordpress.com/2010/07/12/understanding-javascript-arrays/

0

아니오 부정적인 지표를하고 있지만, 당신이 가능하게 번호를 저장하고 추가 할 수 있습니다, 제대로 작동 할 수 없습니다 긍정적 인 가치를 창출하기 위해 색인에 추가하십시오. 예를 들어 -2에서 4까지의 indeces가 있습니다. 배열에서 0 - 6이되므로 원하는 인덱스의 값을 얻기 위해 2를 더하거나 뺄 필요가 있습니다.

관련 문제