var a = ['a1', 'b2', 'd4', 'c3'];
var dict = {};
for(var i=0; i<a.length; ++i) {
dict[(a[i].match(/\d+/)[0])] = a[i];
}
console.log(dict);
for(var i=0; i<a.length; ++i) {
dict[a[i]] = a[i].match(/\d+/)[0];
}
console.log(dict);
В первом случае, когда ключи являются числами, мы имеем выход со словарными ключами, отсортированными.Словарь-ключи автоматически сортируются, если ключи являются номерами
Но во втором случае, когда ключи не являются числами, у нас есть вывод со словарными клавишами в том порядке, в котором они были добавлены!
Это какая-то скрытая функция, я имею в виду, она надежна каждый раз?
Массивы сохраняют свой заказ, объекты не являются (словарь не является термином JS) –
Хотя явно не указано, браузеры _usually_ возвращают ключи объектов в порядке вставки. Однако ни в коем случае не следует полагаться на то, что это всегда так, поскольку для этого нет необходимости. – vlaz
В обоих случаях я спрашивал о словаре, а не массиве. – Viki