开发者

Javascript Array Key Retrieval

My JavaScript code stores a lot of data in arrays. I want to retrieve a key using something similar to what I wrote below. It key that should be retrieved is based on variables that are page-dependent . The following code doesn't work. Can anyone give me a solution to this problem?

This is part of a script that does automatic conjugation. (looks for SUBJECT in a div and then looks for VERB in another div and then conjugates the verb by retrieving the conjugated form from the array)

function getarray(Arra开发者_JS百科y,Key) {
            return Array[Key];
        }

Example of how it should work:

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


First off, what you want is an Object, not an Array. I'm guessing that you're new to javascript and your previous language was either PHP or PERL, and so you think what you're using is an "Associative Array".

The basics: There is no such thing as Associative arrays in Javascript. There is Objects, and a non-primitive subclass of Object called Array, which has some methods for dealing with Numericly named object properties, and a magic length property.

Since the keys you are dealing with are strings, not numbers, you have no use for Arrays.

Javascript Objects on the other hand are similar to an Associative array in php, or a hash in perl. (but they are not exactly the same thing).

As you have no doubt discovered, with an Object, you can use subscript notation to access certain properties, as in

verbs["go"] = "went";

this is equivilent to

verbs.go = "went";

a common mistake is to think that the dot notation is only used for objects, and the subscript notation for "associative arrays", because this is how it works in PHP. In javascript the two notations are interchangable. Since Arrays are a subclass of Object, the above examples work on them as well (but they don't use any special properties of Arrays).

As for your specific problem:

You need an object full of objects.

so for instance

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

}

then your function would be:

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

and an example of its use would be

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


Try changing the parameter name Array to something else. Array is the name of a built-in function/object in javascript.


I don't quite get the point of the function. This is like writing:

function getValue(var) {return var}

Why not just get the value the normal way without wrapping it in a useless function:

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

Also, your code doesn't make sense when you claim to do an innerHTML from an element and somehow get an object instead of a string. What is really going on? I think your problem starts even before this snippet of code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜