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 04.07.2017 07:26

Цитата:

Сообщение от laimas (Сообщение 457457)
Вообще охренеть. :) Идентификатор по параметрам товара? Это нечто. Идентификатор сущности в базе, это некое уникальное значение, которое может быть сформировано средствами SQL автоматически при добавлении сущности в базу. Делается это просто - полем типа INT с первичным ключом и автоикрементом.

Некие ключи по параметрам, это уже иное, причем если товаров много, то гарантии того, что среди них нет с одинаковыми параметрами, а значит и уникальности таких ключей нет, и все ваше накроется тазом. )

Я же уже описывал я не могу дергать постоянно MYSQL , да там есть поле ID это круто это реально спасает но не в моем случии у меня там идет информация как конвеер мне дали API и там нет параметра ID на который можно опереться но есть название , масса , и т.д по факту делаю мазайку из того что дают и чтобы работало


Там видете какая фишка чтобы у менеджера допустим за сегодня не повторялось значение этого товара пока он находится в работе на сайте, эту уникальность я и могу добиться с MD5

laimas 04.07.2017 07:35

Цитата:

Сообщение от biryukovm
я не могу дергать постоянно MYSQL

Что касается базы, то в ней есть понятие Индекс, которое уж точно вам должно быть известно. Следовательно "чем дергать по нескольким словам", это надуманная проблема при наличии индекса в нужном поле/полях.

Я не спорю, что нельзя использовать собственные значение как ключи, например это же делается в случае тегов. Но каким образом можно обеспечить уникальность в вашем случае основанных на параметрах? Конечно мне не известно многое, либо вы излагаете так, что такого просто не может быть, так как если понимать все как есть, то например:

товар А синий квадратный
товар Б зеленый круглый
товар Г синий квадратный

И если хеш по параметрам, то у товара А и Г они будут одинаковы.

Но если все у вас Ок, то как перебрать и найти показано.

laimas 04.07.2017 07:40

И да, все ведь еще зависит и от того какова цель хранения. Например, если некто работает с определенным набором, то в хранилище в конечном итоге достаточно хранить только идентификаторы этого набора. При входе вновь, к базе потребуется только один запрос - загрузить сущности этих идентификаторов, и продолжать работать.

Но это к слову, так как цели ваши не известны.

biryukovm 04.07.2017 07:42

Цитата:

Сообщение от laimas (Сообщение 457459)
Но если все у вас Ок, то как перебрать и найти показано.

Да у меня уникальность получилась и работает, но я вот пытаюсь ваш метот использовать по перебору
И даже при таком
for(var i=0; i< data.length; i++) {
alert(JSON.stringify(data[i].key));

ИЛИ так

alert(data[i].key);

}

Выходит undefined
А я привык видеть что мне сравнивать

laimas 04.07.2017 07:48

Цитата:

Сообщение от biryukovm
JSON.stringify(data[i].key)

Это что такое и зачем? У вас свойство key объекта, это строка, хеш, какие тут могут быть JSON.stringify(data[i].key) к ней?

var data = [
    {"key":"16a3f79f7f1abc856e3a897ed5c71616","param":{"tip":"1","tip2":"tewer"}},
    {"key":"1a79c7ebdb390269cca0d2675ef78204","param":{"tip":"1","tip2":"sik"}},
    {"key":"83bec884740a900a86f06a0963f07e82","param":{"tip":"1","tip2":"anlo"}}
];
for(var i=0; i < data.length; i++) {
    alert(data[i].key)
    //если ищем в хеш определенный, то
    if(data[i].key == '1a79c7ebdb390269cca0d2675ef78204') {
        alert(i) //индекс в котором найден объект с данным хеш
        break
    }
}

biryukovm 04.07.2017 08:40

Цитата:

Сообщение от laimas (Сообщение 457462)
Это что такое и зачем? У вас свойство key объекта, это строка, хеш, какие тут могут быть JSON.stringify(data[i].key) к ней?

var data = [
    {"key":"16a3f79f7f1abc856e3a897ed5c71616","param":{"tip":"1","tip2":"tewer"}},
    {"key":"1a79c7ebdb390269cca0d2675ef78204","param":{"tip":"1","tip2":"sik"}},
    {"key":"83bec884740a900a86f06a0963f07e82","param":{"tip":"1","tip2":"anlo"}}
];
for(var i=0; i < data.length; i++) {
    alert(data[i].key)
    //если ищем в хеш определенный, то
    if(data[i].key == '1a79c7ebdb390269cca0d2675ef78204') {
        alert(i) //индекс в котором найден объект с данным хеш
        break
    }
}

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

var data = localStorage.stavka && JSON.parse(localStorage.stavka) || [];

for(var i=0; i < data.length; i++) {
alert(data[i].key)
//если ищем в хеш определенный, то
if(data[i].key == '1a79c7ebdb390269cca0d2675ef78204') {
alert(i) //индекс в котором найден объект с данным хеш
break
}


Ничего не меняя цыкл идет это видно но по пораметру alert(data[i].key) отображает undefined

biryukovm 04.07.2017 09:10

Удивительно покалдовал и заработало видимо где-то в синтаксисе ошибка или кэш

laimas 04.07.2017 09:17

Цитата:

Сообщение от biryukovm
это видно но по пораметру alert(data[i].key) отображает undefined

Это значит, что нет такого вообще, не определено. Коли тренируетесь, значит есть ошибки, и это не кеш виноват, а есть какой-то бардак в хранилище. Хранилище можно очистить все методом clear().

biryukovm 04.07.2017 09:36

Цитата:

Сообщение от laimas (Сообщение 457467)
Это значит, что нет такого вообще, не определено. Коли тренируетесь, значит есть ошибки, и это не кеш виноват, а есть какой-то бардак в хранилище. Хранилище можно очистить все методом clear().



Я же уже написал что подправил, подскажите такой момент по удаления Вы подсказали использовать splice

я его спользую так data.splice(0, i);
Он работает и даже все хорошо но вот проблемка есть он удаляет и все последующие значения что есть в массиве, а как удалить только определенные индексы массива

laimas 04.07.2017 09:50

Цитата:

Сообщение от biryukovm
проблемка есть он удаляет и все последующие значения что есть в массиве, а как удалить только определенные индексы массива

Просто внимательно прочесть о методе, его параметрах. Индекс массива в котором найдено знаем и что удалять надо один элемент тоже.


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