Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2018, 16:27
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Спарсил 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


А как из него данные получить? Мне вообще нужно чтобы это был многомерный массив))
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2018, 16:41
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Вообще-то у вас и получился двумерный массив такого вида
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]);
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2018, 16:42
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

Двумерный массив:
console.log(result.data);
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2018, 16:44
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от Dilettante_Pro Посмотреть сообщение
Вообще-то у вас и получился двумерный массив такого вида
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 будет называться...
Ответить с цитированием
  #5 (permalink)  
Старый 13.04.2018, 16:49
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от the_little
но то что этот массив называется data
Точнее, result.data - смотрите пост от Nexus. Но, поскольку у меня вашего result нету - я показал попроще
Ответить с цитированием
  #6 (permalink)  
Старый 17.04.2018, 09:29
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

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

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

Выглядит так
$(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);
  });
});
Ответить с цитированием
  #7 (permalink)  
Старый 17.04.2018, 09:39
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

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

Последний раз редактировалось Nexus, 17.04.2018 в 11:34.
Ответить с цитированием
  #8 (permalink)  
Старый 17.04.2018, 11:26
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сделал так. Консоль чистая...
$(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);
		});

  });
});
Ответить с цитированием
  #9 (permalink)  
Старый 17.04.2018, 11:33
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

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

Изменил 7й пост, попробуйте так.
Я переименовал опцию "complete" в "success" и с чего-то решил, что это должно работать...
Ответить с цитированием
  #10 (permalink)  
Старый 17.04.2018, 12:05
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С чего начать и куда дальше двигаться lepeed Оффтопик 48 09.10.2014 12:34
Чего я не понимаю в .each() ? LittlePony jQuery 10 24.08.2012 00:35