JavaScript словарь с именами - PullRequest
       1

JavaScript словарь с именами

54 голосов
/ 21 апреля 2011

Я хочу создать словарь в javascript, например:

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

Я хочу заполнить html-таблицу позже и установить для заголовков таблицы первый столбец myMappings, а для ширины столбцов - второй. Поскольку я новичок в JS, возникают проблемы с поиском чистого пути. Может кто-нибудь предложить?

Спасибо

Ответы [ 8 ]

65 голосов
/ 21 апреля 2011

Основная проблема, которую я вижу в том, что у вас есть, заключается в том, что сложно заполнить таблицу для заполнения таблицы.

Просто используйте массив массивов:

var myMappings = [
    ["Name", "10%"], // Note the quotes around "10%"
    ["Phone", "10%"],
    // etc..
];

... что упрощает доступ:

myMappings[0][0]; // column name
myMappings[0][1]; // column width

В качестве альтернативы:

var myMappings = {
    names: ["Name", "Phone", etc...],
    widths: ["10%", "10%", etc...]
};

И доступ с:

myMappings.names[0];
myMappings.widths[0];
64 голосов
/ 21 апреля 2011

Другой подход заключается в том, чтобы иметь массив объектов, где каждый отдельный объект содержит свойства столбца.Это немного меняет структуру «myMappings», но облегчает работу с:

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

Тогда вы можете легко перебрать все ваши «столбцы» с помощью цикла for:

for (var i = 0; i < myMappings.length; i += 1) {
    // myMappings[i].title ...
    // myMappings[i].width ...
}
20 голосов
/ 21 апреля 2011

Вы пытаетесь использовать объект JSON?

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

Для доступа:

myMappings.name;
myMappings.phone;
etc..
15 голосов
/ 10 декабря 2014

Технически объект является adictionary.

var myMappings = {
    mykey1: 'myValue',
    mykey2: 'myValue'
};

var myVal = myMappings['myKey1'];

alert(myVal); // myValue

Вы можете даже пройти через одну.

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

Нет причин, чтобы когда-либо изобретать велосипед. И, конечно, назначение идет как:

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

И ContainsKey:

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

Я предлагаю вам следовать этому http://javascriptissexy.com/how-to-learn-javascript-properly/

9 голосов
/ 01 октября 2013

Попробуйте:

var myMappings = {"Name":"10%",
"Phone":"10%",
"Address":"50%",
"Zip":"10%",
"Comments":"20%"}
//access like this
myMappings["Name"] //returns "10%"
myMappings.Name //same thing as above
//to loop through...
for(var title in myMappings){
  //do whatever with myMappings[title]
}
5 голосов
/ 30 августа 2013

Изменить >> Хорошие новости, вот теперь более простой, родной и более эффективный способ подражать диктату в JS: Также используйте, что JS слабо типизирован. Скорее вывод типа. Во всяком случае ..

Вот как (выдержка из консоли Google Chrome):

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
3 голосов
/ 21 апреля 2011

Я предлагаю не использовать массив, если у вас есть несколько объектов для рассмотрения. В этом утверждении нет ничего неправильного.

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 голосов
/ 21 ноября 2013

Вот словарь, который будет принимать любой тип Key, если свойство toString () возвращает уникальные значения. Словарь использует что-либо в качестве значения для пары ключ-значение.

См. http://www.codeproject.com/Articles/684815/Would-JavaScript-Benefit-from-a-Dictionary-Object

Чтобы использовать словарь как есть:

var dictFact = new Dict();
var myDict = dictFact.New();
myDict.addOrUpdate("key1", "Value1");
myDict.addOrUpdate("key2", "Value2");
myDict.addOrUpdate("keyN", "ValueN");

Словарь кодов ниже:

* * 1010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...