Создание 2-х размерного массива из csv

#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);
  

JsFiddle

Комментарии:

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)