Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа массивом (https://javascript.ru/forum/misc/73597-rabota-massivom.html)

Artur_Hopf 27.04.2018 15:07

Работа массивом
 
Добрый день. Я записываю массив в тестовый фаил, и хочу получить обратно такой же массив, только уже из файла. Начальный массив выглядит так:
start_arr = [[1524830444500, "334"],[1524830454487, "334"],[1524830464486, "334"]];
console.log(start_arr);


Получившийся текстовый фаил допустим выглядит так, записанно все в одну строку без пробелов:

["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]

Преобразую его в массив, получаю вот это:
end_arr = ['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]']
console.log(end_arr );


Как мне привести end_arr к виду start_arr ?:blink:
Что то вроде?:
end_arr = ['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]']
console.log(end_arr[0].split(' '));

рони 27.04.2018 15:10

Artur_Hopf,
https://learn.javascript.ru/json

Artur_Hopf 27.04.2018 15:32

рони,
Написал так:
end_arr = ['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]'];
end_arr = JSON.parse(end_arr);
console.log(end_arr );


Пишет ошибку: Uncaught SyntaxError: Unexpected token [ in JSON at position:-?

Dilettante_Pro 27.04.2018 15:33

Цитата:

Сообщение от Artur_Hopf
Получившийся текстовый фаил допустим выглядит так, записанно все в одну строку без пробелов:

["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]

А почему? И зачем?

var start_arr = [[1524830444500, "334"],[1524830454487, "335"],[1524830464486, "336"]],
    str_arr = JSON.stringify(start_arr);
alert(str_arr);
var end_arr = JSON.parse(str_arr);
alert(end_arr[1][1]);

j0hnik 27.04.2018 15:34

перед тем как записываете в файл сделайте.
JSON.sringify(ваш_массив)

laimas 27.04.2018 15:36

Цитата:

Сообщение от Artur_Hopf
['["1524830444500","334"]["1524830454487","334"]["1524830464486","334"]']

Это не JSON.

JSON.stringify([[1524830444500, "334"],[1524830454487, "334"],[1524830464486, "334"]]) возвратит нужное.

Artur_Hopf 27.04.2018 15:45

laimas,
j0hnik,
Dilettante_Pro,
:write: принял все к сведению, как все получится, отпишусь

Artur_Hopf 27.04.2018 16:37

laimas,
j0hnik,
Dilettante_Pro,
рони,
Не получается :cray:
Вот весь пусть что я делаю
1. Пишутся данные в массив:
// все под setInterval
var inputdata = [[]];
var data2 = [d1, d2]; //данные 
inputdata.push(data2); //фигачим данные в пустой массив, там они копятся 
//далее отправляем все это в php
var inp = inputdata[inputdata.length -1]; 
// отравляем последнее значение, чтобы их можно было получить если обновить страницу
$.ajax({
        type: 'ajax',
        method: 'post',
        url: ' url',
        data: ({inp}),
        dataType: 'json',
        success: function(data){
           console.log(data);
        };
});

Далее в php:
public function put_inputdata(){	
        $inputdata = $this->input->post('inp');
        $data = json_encode($inputdata);
        file_put_contents(ROUT_LOG, $data, FILE_APPEND); //ROUT_LOG путь к файлу
        
       $get_data = file_get_contents(ROUT_LOG); //читаем этот же фаил
//        $get_inputdata = json_decode($get_data, TRUE); // этот пункт что то не работает если в файле больше 1го значения []
        return $get_data; //поэтому просто получаю содержимое файла
    }


Привет javascript:
//все тот же ajax запрос под setInterval
$.ajax({
        type: 'ajax',
        method: 'post',
        url: ' url',
        data: ({inp}),
        dataType: 'json',
        success: function(data){
           console.log(data);  //вот как вот это преоброзовать в то что было?
        };
});

laimas 27.04.2018 16:48

Цитата:

Сообщение от Artur_Hopf
var inputdata = [[]];

var inputdata = [];

var inp = inputdata[inputdata.length -1]; - чего это будет?

data: ({inp}), - зачем здесь скобки?

$inputdata = $this->input->post('inp'); - откуда это может появится на сервере?

Откройте отладчик браузера и посмотрите что будет отправляться на сервер.

Dilettante_Pro 27.04.2018 16:53

Цитата:

Сообщение от laimas
var inp = inputdata[inputdata.length -1]; - чего это будет?

var inputdata = [];
var data2 = [1, 2]; //данные 
inputdata.push(data2); //фигачим данные в пустой массив, там они копятся 
//далее отправляем все это в php
var inp = inputdata[inputdata.length -1]; 
alert(JSON.stringify(inp));


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