Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Спарсил csv, а чего дальше не понимаю... (https://javascript.ru/forum/misc/73410-sparsil-csv-chego-dalshe-ne-ponimayu.html)

the_little 13.04.2018 16:27

Спарсил csv, а чего дальше не понимаю...
 
Всем привет!
В общем спарсил я файл csv.
в лог выводится такой вот 'result'
{data: Array(6), errors: Array(0), meta: {…}}
data:Array(6)
0:(6) ["0", "column1", "column2", "column3", "column4", "column5"]
1:(6) ["row1", "1", "2", "3", "4", "5"]
2:(6) ["row2", "6", "7", "8", "9", "10"]
3:(6) ["row3", "11", "12", "13", "14", "15"]
4:(6) ["row4", "16", "17", "18", "19", "20"]
5:(6) ["row5", "21", "22", "23", "24", "25"]
length:6
__proto__:Array(0)
errors:Array(0)
length:0
__proto__:Array(0)
meta:{delimiter: ";", linebreak: "↵", aborted: false, truncated: false, cursor: 137}
__proto__:Object


А как из него данные получить? Мне вообще нужно чтобы это был многомерный массив))

Dilettante_Pro 13.04.2018 16:41

Вообще-то у вас и получился двумерный массив такого вида
var data = [["0", "column1", "column2", "column3", "column4", "column5"],
["row1", "1", "2", "3", "4", "5"],
["row2", "6", "7", "8", "9", "10"],
["row3", "11", "12", "13", "14", "15"],
["row4", "16", "17", "18", "19", "20"],
["row5", "21", "22", "23", "24", "25"]];
alert(data[5][0] + " " + data[0][5] + " " + data[5][5]);

Nexus 13.04.2018 16:42

Двумерный массив:
console.log(result.data);

the_little 13.04.2018 16:44

Цитата:

Сообщение от Dilettante_Pro (Сообщение 483184)
Вообще-то у вас и получился двумерный массив такого вида
var data = [["0", "column1", "column2", "column3", "column4", "column5"],
["row1", "1", "2", "3", "4", "5"],
["row2", "6", "7", "8", "9", "10"],
["row3", "11", "12", "13", "14", "15"],
["row4", "16", "17", "18", "19", "20"],
["row5", "21", "22", "23", "24", "25"]];
alert(data[5][0] + " " + data[0][5] + " " + data[5][5]);

Вот я олух... Я какие названия не подставлял))
но то что этот массив называется data - не догадался.

Так, интересно, а если я другой файл так же сделаю. Тоже толи будет data будет называться...

Dilettante_Pro 13.04.2018 16:49

Цитата:

Сообщение от the_little
но то что этот массив называется data

Точнее, result.data - смотрите пост от Nexus. Но, поскольку у меня вашего result нету - я показал попроще

the_little 17.04.2018 09:29

Вопрос такой тогда.
Парсинга происходит при загрузке страницы.

И есть функция, в которой мне нужно обращаться к данным этого массива.

Выглядит так
$(document).ready(function() {

  Papa.parse("/testArr.csv", {
  	download: true,
    header: false,
  	complete: function(results) {
      console.log(results.data);
  	}
  });

  $('.start-calc').click(function changeFunc() {

    var type = $('#type-okno').val();
    var gluh = $('#type-otkidnoe').val();
    var img  = $('#okno-img');
    var imgtitle = $('#img-title');

    function checkArr(arr,a,b) {
      return arr[arr.findIndex(el=>el[0]>a)][arr[0].findIndex(el=>el>b)];
    }
    var price = checkArr(results.data,7,4);
  });
});

Nexus 17.04.2018 09:39

the_little, можно так попробовать:
$(document).ready(function() {

	var getData=new Promise(function(resolve){
		Papa.parse("/testArr.csv", {
			download: true,
			header: false,
			complete: function(results) {
				resolve(results.data);
			}
		});

	});

  $('.start-calc').click(function changeFunc() {

    var type = $('#type-okno').val();
    var gluh = $('#type-otkidnoe').val();
    var img  = $('#okno-img');
    var imgtitle = $('#img-title');

    function checkArr(arr,a,b) {
      return arr[arr.findIndex(el=>el[0]>a)][arr[0].findIndex(el=>el>b)];
    }
		getData.then(function(data){
			var price = checkArr(data,7,4);
		});
  });
});

the_little 17.04.2018 11:26

Сделал так. Консоль чистая...
$(document).ready(function() {

  var getData=new Promise(function(resolve){
		Papa.parse("/testArr.csv", {
			download: true,
			header: false,
			success: function(results) {
				resolve(results.data);
			}
		});
	});

  $('.start-calc').click(function changeFunc() {

    var type = $('#type-okno').val();
    var gluh = $('#type-otkidnoe').val();
    var img  = $('#okno-img');
    var imgtitle = $('#img-title');

    function checkArr(arr,a,b) {
      return arr[arr.findIndex(el=>el[0]>a)][arr[0].findIndex(el=>el>b)];
    }
		getData.then(function(data){
			var price = checkArr(data,7,4);
      console.log(price);
		});

  });
});

Nexus 17.04.2018 11:33

the_little, значит асинхронный запрос завершился фейлом.
Смотрите вкладку "network".

Изменил 7й пост, попробуйте так.
Я переименовал опцию "complete" в "success" и с чего-то решил, что это должно работать...

the_little 17.04.2018 12:05

Поменял на complete, все заработало. Спасибо!
Я правильно понимаю, что для других парсеров я могу вот тут менять название переменной
var getData=new Promise(function(resolve){

И тогда потом здесь нужную подставлять в зависимости от условий
getData.then(function(data){
            var price = checkArr(data,7,4);
      console.log(price);
        });


Часовой пояс GMT +3, время: 16:46.