2017-01-17 8 views
1

Javascript новичок здесь. Я в настоящее время есть ассоциативный массив в следующем формате:Javascript ассоциативный массив, как сопоставить несколько строк с числом

StringA: number, 
StringB: number 

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

StringA, StringB, StringC: number, 
StringD, StringE: number, 
StringF, StringG, StringH, StringI: number 

В принципе, я хочу, чтобы держатель имеет такое же значение, является ли я написать var holder = arr[StringA] или var holder = arr[StringC]. Если это невозможно, кто-то может указать мне в правильном направлении? Любая помощь будет принята с благодарностью!

+0

вы можете использовать уаг заполнитель для числа, используйте 'Swtich()' 'с перегруженными case'es или жестко закодировать их, как' оа = =-об ос = 123 ; ' – dandavis

+0

вам также нужно изменить номер? и он должен применяться ко всем строкам? –

+0

@ Aᴍɪʀ Да, каждое число обновляется и будет применяться ко всем строкам, которые сопоставлены с ним. – Nishant

ответ

0

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

В основном это создает ссылку на общий объект. Затем вы можете изменить значение внутри объекта.

var temp = { value: 42 }, 
 
    object = { 
 
     a: temp, 
 
     b: temp, 
 
     c: temp 
 
    }; 
 

 
console.log(object.a.value); // 42 
 
object.b.value = 7; 
 
console.log(object.c.value); // 7

+0

Конечно, если что-то динамическое, это разрушается без функций. – dandavis

+0

@ dandavis, это правильно, но, возможно, структура данных сомнительна. –

+0

@NinaScholz почему вам не нужно писать object.b.value.value = 7; изменить значение? – Nishant

0

В основном Js не ассоциативный массив, они являются объектами. Прочтите следующее: http://www.w3schools.com/js/js_arrays.asp

Вам нужны указатели для этого, но у JS нет указателей. Но это способ использовать указатели: использовать объекты.

 var assoc = []; 
 
     assoc["stringA"] = { value: 1}; 
 
     assoc["stringB"] = assoc["stringA"]; 
 
     assoc["stringC"] = assoc["stringA"]; 
 

 
     assoc["stringD"] = { value: 10}; 
 
     assoc["stringE"] = assoc["stringD"]; 
 

 

 
     console.log("A: "+assoc["stringA"].value); 
 
     console.log("B: "+assoc["stringB"].value); 
 
     console.log("C: "+assoc["stringC"].value); 
 
     console.log("D: "+assoc["stringD"].value); 
 
     console.log("E: "+assoc["stringE"].value); 
 
     console.log("======== modify value ======"); 
 
     console.log("\nModify A to 2") 
 
     assoc["stringA"].value = 2; 
 
     console.log("B: "+assoc["stringB"].value); 
 
     console.log("C: "+assoc["stringB"].value); 
 

 
     console.log("\nModify E to 20") 
 
     assoc["stringE"].value = 20; 
 
     console.log("D: "+assoc["stringD"].value); 
 
     console.log("E: "+assoc["stringE"].value);

+0

вместо имени prop, вы можете упомянуть о перегрузке 'valueOf()', поэтому его можно рассматривать как обычный экземпляр Number ... – dandavis

 Смежные вопросы

  • Нет связанных вопросов^_^