Прежде всего, я люблю всегда объявлять переменную для текущего элемента массива:
for(/*...*/){
var x = arr[i];
/*...*/
}
его не большой сделки, но это избавит меня от повторного набора arr [i]. Кроме этого, ваш текущий код отлично подходит, и, возможно, единственное, что нужно изменить, это незначительные улучшения производительности, такие как кеширование длины массива.
Это говорит, одна вещь, которую вы могли бы рассмотреть использует функцию итератора вместо цикл:
arr.forEach(function(x, i){
my_obj[x] = x*2;
});
Это имеет преимущество автоматического создания лексически контекстные переменные цикла, и вы не должны ссылаться на массив более одного раза (полезно, если это выражение вместо просто ссылки на переменные).
Важнейшим предостережением этого подхода является то, что вы не можете использовать break, continue и return для потока управления, как вы могли бы в регулярном цикле. Кроме того, существует небольшое ограничение производительности при вызове дополнительных функций, а некоторые старые браузеры не поддерживают методы итерации массива как встроенные, поэтому вам нужно использовать прокладку или библиотечную функцию.
Этот вопрос не соответствует теме, поскольку он просит улучшения существующего рабочего кода; он, вероятно, принадлежит на codereview.stackexchange.com –
Алекс, что должно быть не по теме? Код в вопросе только иллюстрирует тип проблемы, которую нужно решить, в то время как ответ Алнитак дает необходимые шаги. –
Намерение не было «работает ли этот код?». Это был «какой новый метод я изучаю, чтобы перейти на следующий уровень». – dwilbank