30.06.2013, 02:18
|
Профессор
|
|
Регистрация: 30.01.2008
Сообщений: 230
|
|
Имя свойства объекта в виде цифры.
Хочу создать свойства объекта, к которым бы можно было впоследствии обращаться по цифрам, т.е. чтобы имена свойств были такими 0, 1, 2.
array={}
array_lenght = 10
for(i=0, i<array_length, i++){
array.
}
Тут на сайте в статье все разбирается на примерах, где у свойств стринговые имена. Могут ли они быть nubmer чтобы в примере выше я мог завершить строку так array.i = i;
Если есть вариант только с конвертацией значения i в стринговый формат да и вообще не пойму будет ли верной такая запись
array.i.toString() = i;
или по другому надо?
|
|
30.06.2013, 02:29
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
lancer,
Не проще задать имена массивом, и управлять по номеру элемента в массиве ?
либо имена - свойством объекта с value = номеру имени,
а первое свойство объекта сделать равным упорядоченному по номерам массивом остальных свойств(имён)
|
|
30.06.2013, 02:31
|
|
Люмус, Емаксос Developer!
|
|
Регистрация: 06.05.2010
Сообщений: 677
|
|
Если хотите цифры - используйте массивы.
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['ↂ']);
|
|
30.06.2013, 03:22
|
Профессор
|
|
Регистрация: 30.01.2008
Сообщений: 230
|
|
Ок, здесь массивы.
Цитата:
|
либо имена - свойством объекта с value = номеру имени,
а первое свойство объекта сделать равным упорядоченному по номерам массивом остальных свойств(имён)
|
Совсем не понял, можно пример?
Цитата:
|
Но в объектах в качестве ключей можно использовать любые UTF-8 строки
|
Любые UTF-8 строки. Но когда стоит цифра это уже не строка UTF-8, а цифра. В чем тогда суть определения UTF-8 строки?
|
|
30.06.2013, 04:49
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от 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]]);
}
Последний раз редактировалось Deff, 30.06.2013 в 04:54.
|
|
30.06.2013, 06:15
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от lancer
|
Любые UTF-8 строки. Но когда стоит цифра это уже не строка UTF-8, а цифра. В чем тогда суть определения UTF-8 строки?
|
Значение переменной автоматически приведется к строке. Пора бы уже привыкнуть к такой особенности языка.
|
|
30.06.2013, 06:21
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от 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));
|
|
30.06.2013, 06:44
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
danik.js,
Из опыта говорю, где собака порылась, у мну тут объектик был на 500 т объектов - словарик стилей, так перебор и создание листинга занимал секунд несколько, а поскольку один фиг имена формируются сервером, так сформировать листинг на серве, - как два пальца, нежели перебор, да еще если значения функциями
|
|
30.06.2013, 06:45
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
var array = {
0: 'Ноль',
1: 'Один',
2: 'Два',
9: 'Девять'
}
for(var i in array) alert(i+': '+array[i]);
|
|
30.06.2013, 06:50
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Ruslan_xDD,
Вообщем тоже идея - но нужны тогда два объекта, если к именам привязать значения, хотя...можно конечно задать массив
var array = {
0: ['Ноль',value0],
1: ['Один',value1],
2: ['Два',value2],
9: ['Девять',value9]
}
for(var i in array) alert(i+': '+array[i][0]);
|
|
|
|