В движках где forEach/map оптимизируются скорость примерно такая же как и у for, там где нет, for быстрее т.к. вызов функции на каждой итерации дополнительно грузит.
Если данных в селекте нет, то их нужно сначала добавить (что-то типа .select2('data', {results:[...]}) для версии 3.x).
Вот пример где есть установка для динамичкий подгружаемых данных: plnkr.co/edit/RK7uuc?p=preview