#javascript #arrays #csv
#javascript #массивы #csv
Вопрос:
вот мой csv,
Nejvíce za měsíc;;
1.;Jack;900
2.;George;850
3.;Martin;800
4.;John;700
5.;Martin;701
В моем коде я загружаю его из dropbox
$.ajax({
url: 'https://dl.dropboxusercontent.com/s/11ofmbg4d4y3gb0/Top.csv',
dataType: 'text',
}).done(successFunction);
Мой код создает только 1-мерный массив.
function successFunction(data) {
var promenna = data.split(";");
console.log(promenna);
}
Я хотел бы создать из него массив, и ему должно понравиться это. Как я могу это сделать?
var promenna = [
["Nejvíce za měsíc", "900"],
["Jack", "900"],
["George", "850"],
["Martin", "800"],
["John", "700"],
["Martin", "701"],
];
Ответ №1:
Небольшая коррекция в вашем коде и его работе. Вы можете попробовать это в консоли вашего браузера;
$.ajax({
url: 'https://dl.dropboxusercontent.com/s/11ofmbg4d4y3gb0/Top.csv',
dataType: 'text',
}).done(successFunction);
function successFunction(data) {
var promenna = data.split(";"),
tempArr = [],
len = promenna.length;
for (let i = 0; i <= len; i = 2) {
tempArr.push([promenna[i], promenna[i 1]]);
}
console.log(tempArr);
}
Ответ №2:
Вы можете использовать что-то вроде этого :
var data = "1.;Jack;900n"
"2.;George;850n"
"3.;Martin;800";
var promenna = data.replace(/n/g,";").split(";");
var result = [];
console.log(promenna);
for(var i = 0; i < promenna.length; i =3) {
var line = [];
line.push(promenna[i 1]);
line.push(promenna[i 2]);
result.push(line);
}
console.log(result);
Комментарии:
1. Спасибо, именно то, что я хотел. Но я не могу найти, что, если у меня разные данные. Что, если я хотел бы создать 5-мерный слой, а что, если 2?
2. @Ostrov Не уверен, что я понял, чего вы хотите, но если вы хотите иметь аналогичный массив, но с примерно 5 записями вместо 2, просто измените значение
i =3
наi =<number of entry in your line>
, а затем вставьте то, что вы хотите, в строку.[i]
является ли первая запись («1.»,»2.»,…),[i 1]
второй («Джек», «Джордж») и т.д…3. Допустим, что я бы создал из toAray aray см. codepen codepen.io/anon/pen/VKXNvO
4. @Ostrov да, как я уже сказал, измените i = 3 на i = 4 (поскольку у вас 4 записи в строке), а затем используйте line.push(promenna[i]), line.push([i 1]) … [i 2], [i 3]
5. Спасибо! Теперь я понимаю.
Ответ №3:
Сначала объявите массив, а затем поместите свои результаты в этот массив
успешная функция функции (данные) {
var finalArray = new Array();
var promenna = data.split(";");
finalArray.push(promenna);
console.log(finalArray);
}
Ответ №4:
Объединение через with splice
в результирующем массиве.
var arr = [
'Nejvíce za měsíc',
'',
'Jack',
900,
'George',
850,
'Martin',
800,
'John',
700,
'Martin',
701
];
for (var i = 0; i < arr.length; i ) {
arr[i] = [arr[i], arr.splice(i 1, 1).pop()];
}
console.log(arr)