Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Имя свойства объекта в виде цифры. (https://javascript.ru/forum/misc/39433-imya-svojjstva-obekta-v-vide-cifry.html)

lancer 30.06.2013 02:18

Имя свойства объекта в виде цифры.
 
Хочу создать свойства объекта, к которым бы можно было впоследствии обращаться по цифрам, т.е. чтобы имена свойств были такими 0, 1, 2.

array={}
array_lenght = 10

for(i=0, i<array_length, i++){
	array.	
}


Тут на сайте в статье все разбирается на примерах, где у свойств стринговые имена. Могут ли они быть nubmer чтобы в примере выше я мог завершить строку так array.i = i;

Если есть вариант только с конвертацией значения i в стринговый формат да и вообще не пойму будет ли верной такая запись

array.i.toString() = i;

или по другому надо?

Deff 30.06.2013 02:29

lancer,
Не проще задать имена массивом, и управлять по номеру элемента в массиве ?
либо имена - свойством объекта с value = номеру имени,
а первое свойство объекта сделать равным упорядоченному по номерам массивом остальных свойств(имён)

Magneto 30.06.2013 02:31

Если хотите цифры - используйте массивы.
var
    arr = [];

arr[100] = '100'

alert(arr[100])


Но в объектах в качестве ключей можно использовать любые UTF-8 строки, даже пустую строку, только доступ к ним можно будет получить через [].
var
    obj = {};

obj[''] = 'Пустая строка';
obj[1] = 'Цифра';
obj['я'] = 'Русская буква Я';
obj['ↂ'] = 'Неведомая фигня';

alert(obj['']);
alert(obj[1]);
alert(obj['я']);
alert(obj['ↂ']);

lancer 30.06.2013 03:22

Ок, здесь массивы.

Цитата:

либо имена - свойством объекта с value = номеру имени,
а первое свойство объекта сделать равным упорядоченному по номерам массивом остальных свойств(имён)
Совсем не понял, можно пример?

Цитата:

Но в объектах в качестве ключей можно использовать любые UTF-8 строки
Любые UTF-8 строки. Но когда стоит цифра это уже не строка UTF-8, а цифра. В чем тогда суть определения UTF-8 строки?

Deff 30.06.2013 04:49

Цитата:

Сообщение от lancer
Совсем не понял, можно пример?

Ну удобно получить и сходу листинг имен по номеру из Первого свойства;
С другой стороны, легко по свойству получать значения
var obj={
"0001":"имя1,имя2,имя3".split(','), //Листинг Имен
"имя1":'asdasdasd',
"имя2":'vvvvvvvv',
"имя3":'dddddddd'
}

var length = obj['0001'].length;
for(var i=0;i<length; i++){
  alert(obj['0001'][i]+'='+obj[obj['0001'][i]]);
}

danik.js 30.06.2013 06:15

Цитата:

Сообщение от lancer
Любые UTF-8 строки. Но когда стоит цифра это уже не строка UTF-8, а цифра. В чем тогда суть определения UTF-8 строки?

Значение переменной автоматически приведется к строке. Пора бы уже привыкнуть к такой особенности языка.

danik.js 30.06.2013 06:21

Цитата:

Сообщение от Deff
Ну удобно получить и сходу листинг имен по номеру из Первого свойства;

А в чем удобство? "Листинг имен" можно получить в for in цикле. А когда нужен массив, то Object.keys (ES5)


var obj = {
    "имя1":'asdasdasd',
    "имя2":'vvvvvvvv',
    "имя3":'dddddddd'
};

// Да уж.. америку открываю...
for (var prop in obj){
    alert (prop + '=' + obj[prop]);
}

alert(Object.keys(obj));

Deff 30.06.2013 06:44

danik.js,
Из опыта говорю, где собака порылась, у мну тут объектик был на 500 т объектов - словарик стилей, так перебор и создание листинга занимал секунд несколько, а поскольку один фиг имена формируются сервером, так сформировать листинг на серве, - как два пальца, нежели перебор, да еще если значения функциями

ruslan_mart 30.06.2013 06:45

var array = {
   0: 'Ноль',
   1: 'Один',
   2: 'Два',
   9: 'Девять'
}

for(var i in array) alert(i+': '+array[i]);

Deff 30.06.2013 06:50

Ruslan_xDD,
Вообщем тоже идея - но нужны тогда два объекта, если к именам привязать значения, хотя...можно конечно задать массив
var array = {
   0: ['Ноль',value0],
   1: ['Один',value1],
   2: ['Два',value2],
   9: ['Девять',value9]
}

for(var i in array) alert(i+': '+array[i][0]);


Часовой пояс GMT +3, время: 04:00.