последовательность элементов в объекте
доброе время суток
столкнулся с такой проблемой в разных браузера элементы в объектах находятся в разных последовательностях в мозиле они отображаются в той последовательности в которой я х туда добавил, а в хроме в алфавитном порядке. подскажите возможно ли каким-то образом указать в всем браузерам что элементы объекта должны отображаться именно в том порядке в каком я их туда добавил? заранее благодарен за помощь! |
syegorius,
никак |
Нет. Но можно сделать грязный хак с использованием доп. переменной.
var obj = {};
var arr = [];
arr.push('key1');
obj['key1'] = 'значение';
arr.push('key2');
obj['key2'] = 'значение2';
arr.forEach(function(item) {
console.log(obj[item]); // выводим по порядку элементы
});
или взять все ключи объекта в виде массива с помощью Object.keys(obj) и использовать https://developer.mozilla.org/ru/doc...cts/Array/sort со своим алгоритмом. |
syegorius,
легко
o={b: 1, a: 1}
for(i in o) console.log(i, o[i])
|
рони,
Я сейчас в мозиле, и у меня работает. ЧЯДНТ? |
theKingOfJava,
ок |
syegorius,
И, кстати, Цитата:
Цитата:
|
очень странно...
да в хроме все выдало как мне хотелось бы... значит хром выводит в алфавитном порядке числовые индексы
var o={30: 1, 1: 2}
for(i in o) console.log(i, o[i])
я просто не знаю как вставить кнопку запустить js |
Цитата:
|
Цитата:
Цитата:
|
theKingOfJava,
выводить по алфавиту не значит выводить попорядку 8 попугаев всегда больше 10 |
Цитата:
|
ну я имел ввиду что индекс=ключ
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
o={10: 1, 8: 1}
for(i in o) console.log(i, o[i])
|
Цитата:
|
theKingOfJava,
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Думаю, мы все привели достаточно примеров, чтобы автор выбрал нужное ему решение. |
Цитата:
|
Safort,
Нет, ты говорил что-то там про for in |
Цитата:
|
рони,
То о чем ты говоришь, кстати, это вообще из другой оперы. Это, видимо, связано с вот этим.
o={1: 1, 0: 0, 2: 2, foo: "bar", length: 3}
;[].forEach.call(o, function(x){console.log(x)})
// ::: 0
// ::: 1
// ::: 2
o={1: 1, 0: 0, 2: 2, foo: "bar", length: 3}
for(i=0; i<o.length; i++) console.log(o[i])
// ::: 0
// ::: 1
// ::: 2
То есть, объекты сразу оптимизируются для использования в качестве массива. Неважно, в какой момент ты добавляешь св-во с числовым ключом, оно становиться сразу в соответствующую позицию. Так что, for in в любом случае, перечисляет в соответствии с реальным расположением элемента. |
| Часовой пояс GMT +3, время: 06:58. |