JavaScript dictionary with names

前端 未结 8 1164
孤街浪徒
孤街浪徒 2020-12-12 18:08

I want to create a dictionary in JavaScript like the following:

myMappings = [
    { "Name": 10%},
    { "Phone": 10%},
    { "Addres         


        
相关标签:
8条回答
  • 2020-12-12 18:26

    An object technically is a dictionary.

    var myMappings = {
        mykey1: 'myValue',
        mykey2: 'myValue'
    };
    
    var myVal = myMappings['myKey1'];
    
    alert(myVal); // myValue
    

    You can even loop through one.

    for(var key in myMappings) {
        var myVal = myMappings[key];
        alert(myVal);
    }
    

    There is no reason whatsoever to reinvent the wheel. And of course, assignment goes like:

    myMappings['mykey3'] = 'my value';
    

    And ContainsKey:

    if (myMappings.hasOwnProperty('myKey3')) {
        alert('key already exists!');
    }
    

    I suggest you follow this: http://javascriptissexy.com/how-to-learn-javascript-properly/

    0 讨论(0)
  • 2020-12-12 18:26

    I suggest not using an array unless you have multiple objects to consider. There isn't anything wrong this statement:

    var myMappings = {
        "Name": 0.1,
        "Phone": 0.1,
        "Address": 0.5,
        "Zip": 0.1,
        "Comments": 0.2
    };
    
    for (var col in myMappings) {
        alert((myMappings[col] * 100) + "%");
    }
    
    0 讨论(0)
  • 2020-12-12 18:27

    You may be trying to use a JSON object:

    var myMappings = { "name": "10%", "phone": "10%", "address": "50%", etc.. }
    

    To access:

    myMappings.name;
    myMappings.phone;
    etc..
    
    0 讨论(0)
  • 2020-12-12 18:29

    Another approach would be to have an array of objects, with each individual object holding the properties of a column. This slightly changes the structure of "myMappings", but makes it easy to work with:

    var myMappings = [
        { title: "Name", width: "10%" },
        { title: "Phone", width: "10%" },
        { title: "Address", width: "50%" },
        { title: "Zip", width: "10%" },
        { title: "Comments", width: "20%" }
    ];
    

    Then you could easily iterate through all your "columns" with a for loop:

    for (var i = 0; i < myMappings.length; i += 1) {
        // myMappings[i].title ...
        // myMappings[i].width ...
    }
    
    0 讨论(0)
  • 2020-12-12 18:31

    An easier, native and more efficient way of emulating a dict in JavaScript than a hash table:

    It also exploits that JavaScript is weakly typed. Rather type inference.

    Here's how (an excerpt from Google Chrome's console):

    var myDict = {};
    
    myDict.one = 1;
    1
    
    myDict.two = 2;
    2
    
    if (myDict.hasOwnProperty('three'))
    {
      console.log(myDict.two);
    }
    else
    {
      console.log('Key does not exist!');
    }
    Key does not exist! VM361:8
    
    if (myDict.hasOwnProperty('two'))
    {
      console.log(myDict.two);
    }
    else
    {
      console.log('Key does not exist!');
    }
    2 VM362:4
    
    Object.keys(myDict);
    ["one", "two"]
    
    delete(myDict.two);
    true
    
    myDict.hasOwnProperty('two');
    false
    
    myDict.two
    undefined
    
    myDict.one
    1
    
    0 讨论(0)
  • 2020-12-12 18:36

    Try:

    var myMappings = {
        "Name":     "10%",
        "Phone":    "10%",
        "Address":  "50%",
        "Zip":      "10%",
        "Comments": "20%"
    }
    
    // Access is like this
    myMappings["Name"] // Returns "10%"
    myMappings.Name // The same thing as above
    
    // To loop through...
    for(var title in myMappings) {
        // Do whatever with myMappings[title]
    }
    
    0 讨论(0)
提交回复
热议问题