Я пытаюсь преобразовать CSV-файл в массив javascript.jQuery/JavaScript - Преобразование CSV в массив
Вот мой код:
var segments = {
'Segment_1':'inves_cast',
'Segment_2':'foreged_prod',
'Segment_3':'air_prod',
'Segment_5':'worldwide',
'Segment_6':'structurals'
};
var divisions = {
'Division_1':'structurals',
'Division_2':'airfoils',
'Division_3':'wyman',
'Division_4':'energy',
'Division_5':'fasteners',
'Division_6':'struc_comp',
'Division_7':'mech_hard',
'Division_8':'engine_prod',
'Division_9':'corp',
'Division_10':'aero',
'Division_11':'timet',
'Division_12':'',
'Division_13':'spec_metals',
};
var csv = $.get('/path/to/locations.csv');
console.log(csv);
var locationArray = transformLocationData(csv);
function transformLocationData(obj) {
var lineArray = [];
if(obj && obj.data) {
var text = (data.responseText);
lines = text.split('\n');
for(var line in lines) {
var lineTokens = line.split(',');
lineArray = [
lineTokens[0],
lineTokens[1],
lineTokens[3],
lineTokens[4],
lineTokens[5],
lineTokens[6],
lineTokens[11],
lineTokens[12],
lineTokens[13],
lineTokens[14],
lineTokens[15],
segments['Segment_' + lineTokens[8]],
divisions['Division_' + lineTokens[9]]
];
}
}
console.log(lineArray);
}
Так что я пытаюсь сделать, это нам AJAX, чтобы получить файл CSV, а затем разделить «responseText» первого линии и Второй петли через те линии и разделить его запятыми, а затем создать массив на основе этих номеров строк.
Вот картина данных я получаю обратно от вызова AJAX:
С лог последней консоли (console.log(lineArray);
) возвращает пустой массив или на самом деле это просто возвращает данные, находится в var lineArray = [];
который пуст, если я заполню его данными var lineArray = ["Lexus", "Audi", "BMW"];
Он вернет этот массив.
Вот plunker со всем кодом: https://plnkr.co/edit/CoZGfr6S9R5LDqR1drzq
Я знаю, что я делаю что-то неправильно, но не могу показаться, чтобы получить его. Я не знаком с такими делами, поэтому любая помощь будет очень признательна.
Не используйте 'для ... in' для перебора массивов – vlaz
@vlaz, тогда почему бы вам не дать мне альтернативу? Вместо того, чтобы просто сказать мне не использовать его :). Как я уже сказал в оригинальном вопросе, я новичок в этом. И для того, чтобы быть новым (я думаю), у меня есть хороший стартовый код. Не могли бы вы рассказать. Особенно, если есть лучший способ сделать это, я хотел бы узнать для будущей справки. Любая помощь приветствуется. – agon024
Поиск информации о 'for ... in' или даже googling 'for in arrays javascript' должен предоставить вам достаточно информации, которую я не хотел повторять, но если вы так хотите:' for ... in' следует использовать перебирать _объекты_, поскольку он проходит через все свойства. С массивами он будет перебирать вещи, которые вы, вероятно, не намереваетесь - в прошлом одним из них было свойство 'length', оно также не будет зацикливаться в том порядке, который вы обязательно захотите, и он может пропустить некоторые записи, которые вы ожидаете. Используйте обычный цикл 'for' или ES6' для ...of', или функциональные 'array.forEach' и' .map', '.find',' .every' и т. д. – vlaz