Solved

VBScript Anonymous Associative Arrays? (like in Javascript)

Posted on 2010-11-15
5
851 Views
Last Modified: 2012-05-10
In Javascript, I can use a key-value association (associative arrays) as an argument in a function to make creating HTML tags easier.  For example,

function img(attr) {
    var prop, imgTag = document.createElement('img');
    for (prop in attr) {
        imgTag.setAttribute(prop, attr[prop]);
    }
    return imgTag;
}

Open in new window


And I can call it like this:
myElem.appendChild(img({
    src : "/images/img.jpg",
    alt : "Some alt text",
    class : "borderImage"
});

Open in new window


This way, I don't need to name each attribute of an image tag as an argument in the function. This is an oversimplified version of what I'm trying to do, and in fact it has nothing to do with HTML, but it's how I learned it in JS.

Is there a way to do something similar in VBScript?  I can create an associative array in VBScript like this:

Dim myArray
myArray("property1") = "value1"
myArray("property2") = "value2"
myArray("property3") = "value3"

Open in new window


But I don't know how to create an anonymous associative array like in Javascript. I need to be able to immediately plug it in as an argument in a function, without building a named array.  Any ideas?
0
Comment
Question by:jamesbcox1980
  • 3
  • 2
5 Comments
 
LVL 92

Accepted Solution

by:
Patrick Matthews earned 500 total points
ID: 34139558
The closest analogue in VBScript would be a Dictionary object.

You may want to see this article about using Dictionaries; it was written from a VBA perspective, but the basics of the class apply as well to VBScript.
0
 
LVL 4

Author Comment

by:jamesbcox1980
ID: 34139973
I've seen the Dictionary before, but I'm not sure how this will help me.  Remember, my purpose here is for simplicity in formatting my code.  Using a dictionary, I'll still have to add each item to the dictionary individually, won't I?
0
 
LVL 92

Expert Comment

by:Patrick Matthews
ID: 34140334
Yes, you would.

Like I said, it's the closest equivalent to an associative array in VBScript.  I did not say it was an exact match :)

Perhaps if you tried describing what you are actually doing I or another Expert can be more helpful.
0
 
LVL 4

Assisted Solution

by:jamesbcox1980
jamesbcox1980 earned 0 total points
ID: 34192319
I was able to figure out based on the Dictionary object what I needed to do. you were correct, it was a very simple fix.  I just had to be creative with how I passed the "associative array" to the function.

Function o(objArray)
        Dim param, val
        Set o = CreateObject("Scripting.Dictionary")

        For Each param In objArray
            val = Split(param, "::")
            If Ubound(val) = 1 Then
                o(val(0)) = val(1)
            End If
        Next
End Function

Open in new window


and I can use an anonymous array and this function to pass my parameters to a function

createNewFile(o(Array(_
    "type::ASCII", _
    "extension::txt", _
    "name::myTextFile", _
    "template::logFile" _
)))

Open in new window


It's not perfect but it works
0
 
LVL 4

Author Closing Comment

by:jamesbcox1980
ID: 34221301
Thanks a bunch.  See my half of the solution with the Scripting Dictionary in use.
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Query not working correctly? (or how i want it to... 6 50
Server Timeout with Loop 6 45
Problem to open text file 11 110
Passing Credentials into a command line 13 35
Hello, all! I just recently started using Microsoft's IIS 7.5 within Windows 7, as I just downloaded and installed the 90 day trial of Windows 7. (Got to love Microsoft for allowing 90 days) The main reason for downloading and testing Windows 7 is t…
I was asked about the differences between classic ASP and ASP.NET, so let me put them down here, for reference: Let's make the introductions... Classic ASP was launched by Microsoft in 1998 and dynamically generate web pages upon user interact…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question