В вашем коде:
var Instrument = {};
var InstrumentArray = new Array;
Хотя формальный список параметров может быть опущен при вызове конструктора с new
, это не очень хорошая идея, так как его можно неверно истолковать как присвоение массива, а не как новый экземпляр массива. В любом случае, литерал массива, вероятно, является лучшим выбором (однозначным, меньше для ввода):
var InstrumentArray = [];
То же для:
var array = ["XYZ0", "XYZ1", ... "XYZn"]
В следующем:
data1['Name'] = "X";
data1['TypeString'] = "WatchList";
data1['FileTypeString'] = "XLS";
data1
не был объявлен или инициализирован, предположительно это объект (не смешивайте одинарные и двойные кавычки, если они не вложены, это делает код запутанным), поэтому литерал, вероятно, лучше (по тем же причинам, что и выше) :
var data1 = {'Name': 'X', 'TypeString': 'WatchList', 'FileTypeString': 'XLS'};
, что также намного меньше для ввода.
for (var i = 0; i < array.length; i++) {
Instrument['Symbol'] = array[i];
InstrumentArray.push(Instrument);
}
Другие говорили вам, что здесь происходит, скорее всего, не то, что вы хотите. Обратите внимание, что если имена свойств соответствуют правилам для допустимых идентификаторов, можно использовать точечную запись (что немного удобнее):
Instrument.Symbol = array[i];
Кроме того, поскольку вы добавляете члены в пустой массив с помощью счетчика, вы также можете сделать:
InstrumentArray[i] = Instrument;
но, конечно, они не решат вашу проблему, это просто разные (лучше?) Способы сделать то же самое.