Присвойте атрибуты значениям в массиве js / jquery

0

В моем скрипте функция использует значения в моем массиве teststim.

var teststim =  ["A", "B", "C"]

И я хочу дать "атрибуты" этим значениям, так что, например, A имеет атрибут "имя", "день рождения",...

Мне нужно найти способ доступа к этим атрибутам. Я подумал о чем-то вроде этого:

var teststim = {content: "A", attribute: "name"}, 
               {content: "B", attribute: "birthday"}, 
               {content: "C", attribute: "whatever"}

Возможно, я близка, чем я думаю, но я не могу получить доступ к значениям атрибута, соответствующим значениям содержимого. Что мне не хватает?

  • 0
    Как вы пытаетесь получить доступ к свойствам attribute ?
Теги:
arrays

3 ответа

2
Лучший ответ

Вам нужен массив объектов:

var teststim = [{content: "A", attribute: "name"}, 
                {content: "B", attribute: "birthday"}, 
                {content: "C", attribute: "whatever"}];

for (var i=0; i<teststim.length; i++) {
    var obj = teststim[i];
    if (obj.content=='C') {
        alert(obj.attribute); // "whatever"
    };
};
1

Вы не можете давать свойства/атрибуты значениям ВАШЕГО массива. Поэтому вы должны начать с:

var arr = [
   {content:'A'},
   {content:'B'},
   {content:'C'}
];

Теперь вы можете добавить новые атрибуты, например:

arr[0].attribute = '2';
  • 0
    «Вы не можете давать свойства / атрибуты значениям массива.» - конечно вы можете.
  • 0
    Я имел в виду его массив. Его массив содержит строки, поэтому вы не можете добавить к ним свойства.
0

Если вы хотите сопоставить значение в массиве с другим (более длинным?) Значением, вы можете использовать:

var mapping = {"A" : "name", 
               "B" : "birthday", 
               "C" : "whatever"}


for(var i = 0, len = teststim.length; i < len; i++)
{
    alert(mapping[teststim[i]]);
}

Если нет, то просто иметь массив объектов:

var teststim = [{ 'content' : "A", 'attribute' : "name" }, 
                { 'content' : "B", 'attribute' : "birthday" }, 
                { 'content' : "C", 'attribute' : "whatever" }];


for(var i = 0, len = teststim.length; i < len; i++)
{
    alert(teststim[i].attribute);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню