2009-12-29 4 views
2

자바 스크립트 코드는 배열에 많은 데이터를 저장합니다. 아래에 쓴 것과 비슷한 것을 사용하여 키를 검색하고 싶습니다. 검색되어야하는 키는 페이지에 종속적 인 변수를 기반으로합니다. 다음 코드는 작동하지 않습니다. 아무도 나 에게이 문제에 대한 해결책을 줄 수 있습니까?자바 스크립트 배열 키 가져 오기

이것은 자동 결합을 수행하는 스크립트의 일부입니다.

verb = innerhtmlfromdiv; 
subject = innerhtmlfromotherdiv; 
    function getarray(Array,Key) { 
      return Array[Key]; } 
conjugatedverb = getarray(verb,subject); 
htmltextbox.value = conjugatedverb; 

답변

0

: 작동 방법의

function getarray(Array,Key) { 
      return Array[Key]; 
     } 

예 (a DIV 피사체를 찾은 후 다른 DIV의 동사를 검색하고 어레이로부터의 공액 형태를 입수하여 동사 공액) 매개 변수 이름 Array을 다른 것으로 변경해보십시오. Array은 javascript에 내장 된 함수/개체의 이름입니다.

+0

어리석은 나를. 그것이 키워드 인 것을 잊었다. * 벽에 치는 머리 * 건배! – ASG

+0

사실 '배열'은 키워드가 아닌 함수입니다. – SLaks

+0

아 네, 네 말이 맞아. 내 대답을 고쳐 줄게. – Xavi

3

우선 원하는 것은 배열이 아니라 객체입니다. 나는 당신이 자바 스크립트에 익숙하지 않으며, 이전 언어가 PHP 나 PERL 인 것으로 추측하고있다. 그래서 당신은 당신이 사용하고있는 것이 "연관 배열"이라고 생각한다.

기본 사항 : 자바 스크립트에는 연관 배열이 없습니다. Object와 Numericly 명명 된 객체 속성을 다루는 몇 가지 메소드와 마법 길이 속성을 가진 Object라는 객체의 원시적 인 하위 클래스가 있습니다.

다루는 키는 숫자가 아닌 문자열이므로 사용자는 배열을 사용할 수 없습니다.

자바 스크립트 객체는 php의 연관 배열이나 perl의 해시와 비슷합니다. (하지만 정확히 같은 것은 아닙니다). 당신이 객체로 발견 된 의심의 여지를 가지고

, 당신은

verbs["go"] = "went"; 

이 일반적인 실수가있다

verbs.go = "went"; 

에 equivilent입니다 같이 특정 속성에 액세스 할 수 첨자 표기법을 사용할 수 있습니다 점 표기법은 객체에만 사용되며, "연관 배열"에 대한 첨자 표기법은 PHP에서 작동하는 방식이라고 생각합니다. 자바 스크립트에서는 두 가지 표기법을 서로 바꿀 수 있습니다. Arrays는 Object의 서브 클래스이기 때문에 위의 예제도 마찬가지로 작동합니다 (단, Arrays의 특별한 속성은 사용하지 않습니다). 특정 문제에 관해서는

:

당신은 객체의 전체 객체가 필요합니다.

그래서 예를 들어

var verbs = { 
    "do":{"Truck":"Drive","Blender":"Turn On","Bike":"Ride"}, 
    "take":{"Money":"Steal","Julie":"Accompany","Lever":"Pull} 

} 

는 다음 기능은 다음과 같습니다

function conjugate (verb, subject) { 
     return verbs[verb][subject]; 
} 

및 그 사용의 예

conjugate("do","Truck") // returns "Drive" 
0

내가 확실히 요점을 파악하지 않는 것을 함수의.이 기록과 같다 :

function getValue(var) {return var} 

왜 그냥 일반적인 방법으로 쓸모없는 기능에 포장하지 않고 값을 얻을 수 없습니다 : 당신이 주장 할 때

conjugatedverb = verb[subject]; 
htmltextbox.value = conjugatedverb; 
또한

, 코드가 이해가되지 않습니다 요소로부터 innerHTML을 가져오고 어떻게 든 문자열 대신 객체를 얻습니다. 정말로 무슨 일이 일어나고있는거야? 나는이 코드 스 니펫 이전에 문제가 시작되었다고 생각한다.

+0

공액 동사를 얻는 방법에 대한 정확한 메커니즘을 추상화하는 기능을 만들 수 있습니다. 그럼에도 불구하고 나는이 문제에 대한 혼란을 공유합니다. – Breton