Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   JSON localStorage (https://javascript.ru/forum/events/69557-json-localstorage.html)

biryukovm 03.07.2017 12:56

Да я посмотрел Ваш код работает, Но как мне использовать эту строчку по уму
data.push({data : new Date().toString()})

Когда у меня данные

var tovar_list = {
"tovar": p1,
"price": p2,
"tip": p3,
"sort": p4,
"massa": p5
};

Делаю data.push({data : new tovar_list}) не помогает

laimas 03.07.2017 13:05

Цитата:

Сообщение от biryukovm
как мне использовать эту строчку по уму
data.push({data : new Date().toString()})

Никак, это просто для примера. Используйте свои, но извлекая из хранилища данные, преобразовывайте их в массив/объект, и только потом работайте с ним. Неужели до сих пор не понятно?

biryukovm 03.07.2017 13:12

Цитата:

Сообщение от laimas (Сообщение 457332)
Никак, это просто для примера. Используйте свои, но извлекая из хранилища данные, преобразовывайте их в массив/объект, и только потом работайте с ним. Неужели до сих пор не понятно?

Я же сразу написал что не профи в этих делах мне с PHP легче разбраться чем с JS

laimas 03.07.2017 13:19

Цитата:

Сообщение от biryukovm
мне с PHP легче разбраться

Ну хорошо. В РНР тоже можно работать с JSON, которая и для него это строковое значение. Ваш php-сценарий получает такой json "[1,2,3]" в переменной $a. Вопрос: можно сразу получить из него значение индекса один как $a[1] или сначала нужно преобразовать json в массив - json_decode("[1,2,3]")?

biryukovm 03.07.2017 13:24

Цитата:

Сообщение от laimas (Сообщение 457335)
Ну хорошо. В РНР тоже можно работать с JSON, которая и для него это строковое значение. Ваш php-сценарий получает такой json "[1,2,3]" в переменной $a. Вопрос: можно сразу получить из него значение индекса один как $a[1] или сначала нужно преобразовать json в массив - json_encode("[1,2,3]")?

это я знаю но не могу перекидывать обработку на PHP так как уже очень много AJAX подкюючений**/*******


Я разобрался и у меня получилось использовать Ваш код под свои корректировки правильно коротко говоря вот

var tovar_list = {
"tovar": p1,
"price": p2,
"tip": p3,
"sort": p4,
"massa": p5
};


var data = localStorage.tovar_list && JSON.parse(localStorage.tovar_list) || [];
data.push(tovar_list)
localStorage.tovar_list = JSON.stringify(data);

alert(JSON.stringify(data))


Подскажите пожалуйста еще такой момент как можно удалить часть массива
А точнее полностью {"tovar": p1,"price": p2,"tip": p3,"sort": p4,"massa": p5}

Зная только данные о "tovar": p1

laimas 03.07.2017 13:24

Цитата:

Сообщение от biryukovm
Делаю data.push({data : new tovar_list}) не помогает

data.push(tovar_list)


Вот только зачем? Если есть объект, свойства которого могут изменять и который нужно хранить, зачем же его прятать в массив, храните сам объект.

laimas 03.07.2017 13:31

Цитата:

Сообщение от biryukovm
не могу перекидывать обработку на PHP так как уже очень много AJAX подкюючений

Оптимизируйте свои подключения, очень много, это очень плохо. Выбор стороны обработки данных также зависит не от того, что "у меня тут дохрена, поэтому не пойдет", а от целесообразности.

Цитата:

Сообщение от biryukovm
как можно удалить часть массива

Элемент массива так: https://developer.mozilla.org/ru/doc...s/Array/splice.

Вы что делаете, корзину товаров на клиенте?

biryukovm 03.07.2017 13:40

Цитата:

Сообщение от laimas (Сообщение 457340)
Оптимизируйте свои подключения, очень много, это очень плохо. Выбор стороны обработки данных также зависит не от того, что "у меня тут дохрена, поэтому не пойдет", а от целесообразности.



Элемент массива так: https://developer.mozilla.org/ru/doc...s/Array/splice.

Вы что делаете, корзину товаров на клиенте?

Типа корзины но не корзина это для менеджеров чтобы они фиксили в обработку тяжело обьяснить.

Я посмотрел метод splice() и прихожу к тому что мне надо в массиве создать ключь и в ключе иметь параметры и если надо удалить то что то удаляю я ключь с параметрами или можно по другому ?

И чуть не забыл как можно избавиться от добовления дублей в этом ммассиве предположим добавили торт 1,2,3 и пользователь опять жмет на 2 торт но он уже естькак его не добовлять ?

laimas 03.07.2017 13:50

Цитата:

Сообщение от biryukovm
в массиве создать ключь

КЛЮЧ ;)

Нет ключей в js-массивах, так как в JS нет ассоциативных массивов, но есть объекты, в которых свойства и будут ключами ассоциации. То есть ход вашей мысли правильный, но только не массив, а объект хранящий объекты, свойствами первичного объекта которого будут уникальные идентификаторы ваших товаров или чего-то, что "фиксят" ваши менеджеры. То есть:

var data = {
    p1 : {
         price: p2,
         tip: p3,
         sort: p4,
         massa: p5
     },
     ..... 
}


если p1 и есть уникальный идентификатор. Такое хранение решит и проблему дубликатов.

biryukovm 03.07.2017 14:01

Цитата:

Сообщение от laimas (Сообщение 457348)
КЛЮЧ ;)


если p1 и есть уникальный идентификатор. Такое хранение решит и проблему дубликатов.

А как перепроверку сделать на существование ил на перезапись ?


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