2013-03-04 2 views
2

JavaScript에서 다차원 배열을 선언하고 채우는 가장 효율적인 방법은 무엇입니까?자바에서 다차원 배열을 선언하고 채우는 효율적인 방법

나는 현재이 일을 해요 :

ff = Array(); 
for (i = 0; i < 30; i++) { 
    ff[i] = Array(); 
    ff[i][i] = 1.0; 
} 

ff[1][2] = 0.041666667; 
ff[1][3] = 0.000694444; 
ff[2][3] = 0.016666667; 
ff[1][4] = 0.000011574; 
ff[2][4] = 0.000277778; 
ff[3][4] = 0.016666667; 
ff[1][5] = 0.000011574; 
ff[2][5] = 0.000035315; 
ff[3][5] = 0.00211888; 
ff[4][5] = 0.1271328; 
ff[1][6] = 0.000000025; 
ff[2][6] = 0.000000589; 
ff[3][6] = 0.000035315; 
ff[4][6] = 0.00211888; 
ff[5][6] = 0.016666667; 

최대 ff[n][n]에를 n가 배열 값을 선언 수백 줄의에 이르게, 30까지 할 수있는 곳 (축소 된 경우에도,이 문제를합니까?). ff[n][n] = 1ff[i][j] = 1/(ff[j][i]) 이후 배열의 "위쪽"반을 채울 필요가 있습니다. 그래서 전체 배열을 반복하고 "아래쪽"절반을 채우기 위해 "위쪽"반전을 뒤집습니다.

+4

어떻게 값이 생성됩니까? – Dancrumb

+2

'ff = Array();'리터럴 선언을 사용하지 마라 :'ff = [];' – Chad

+2

http://jsperf.com/ –

답변

2

숫자를 보면 다양한 시간 단위로 변환하려는 것처럼 보입니다.

더 나은 적합성이 객체가 아닌지 궁금합니다.

var seconds = { 
    day: 86400, 
    hour: 3600, 
    minute: 60, 
    second: 1 
}; 

var conversions = {}; 

['day','minute','hour','second'].forEach(function(fromUnit){ 
    var subConversions = {}; 
    var fromValue = seconds[fromUnit]; 
    ['day','minute','hour','second'].forEach(function(toUnit){ 
    subConversions[toUnit] = fromValue/seconds[toUnit]; 
    }); 
    conversions[fromUnit] = subConversions; 
}); 

function convert(value, from, to){ 
    return value * conversions[from][to]; 
} 

이렇게하면됩니다.

변환 (1 '일', '시간') === 24

변환 (1, "일", "초") === 86400

변환 (3, '시간', '초') === 10800

단순한 시간 변환보다 상황이 더 복잡하더라도이 방법은 훨씬 더 이해하기 쉬운 코드로 이어질 것입니다. 다차원 배열에 특별한 의미를 부여하기 시작하면 상황이 꽤 엉망이 될 수 있습니다.

+1

이 점에 대해 많은 감사드립니다. 내 질문에 대한 귀하의 원래 의견이 저를 생각하게 만들고 이것은 분명히 더 깨끗한 방법입니다. – James

+0

마지막 요점 :이 값이 비교적 정적 인 경우 '변환'을 생성하고 JSON으로 내보내는 스크립트를 작성한 다음 해당 JSON을 스크립트에 수동으로 삽입하여 정적으로 정의 할 수 있습니다. – Dancrumb

0

다음과 같은 작업을 수행합니다. 그러면 스크립트를 캐시 할 수있는 별도의 파일에 저장합니다.

ff=[]; 
ff[0]=[0.041666667,000694444,016666667,000277778,016666667]; 
ff[1]=[0.041666667,000694444,016666667,000277778,016666667]; 
ff[2]=[0.041666667,000694444,016666667,000277778,016666667]; 
ff[3]=[0.041666667,000694444,016666667,000277778,016666667]; 
ff[4]=[0.041666667,000694444,016666667,000277778,016666667]; 
ff[5]=[0.041666667,000694444,016666667,000277778,016666667]; 
관련 문제