Solved

VBScript Anonymous Associative Arrays? (like in Javascript)

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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Select record with the most recent date 14 67
Creating An Intelligent Dropdown 8 42
Diminish Pop-up  in 3 seconds 7 44
How to implement an additional command 16 40
Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
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…

790 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