Solved

VBScript Anonymous Associative Arrays? (like in Javascript)

Posted on 2010-11-15
5
848 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

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Welcome, welcome!  If you are new to the series and haven't been following along, please take a brief moment to review the first three installments: Part 1 (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/A_266-VBScri…
This is pretty cool.  The purpose of this VB Script is to help you document where JAR (Java ARchive) files and specifically java class files are located so that you can address issues seen with a client or that you can speak intelligently with a dev…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
This video discusses moving either the default database or any database to a new volume.

746 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now