Имена свойств обрабатываются буквально в Javascript, независимо от того, существуют ли переменные с таким именем.
Однако вы переопределяете объект на каждой итерации цикла.Ваш код должен выглядеть примерно так:
data2[i] = {
id: id,
level: level,
name: name
};
Обратите внимание, что я удалил литерал массива - []
вокруг литерала объекта.Я не могу себе представить, что вам это нужно, но вы всегда можете положить его обратно, если вы действительно сделали это.