03.07.2017, 14:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от biryukovm
|
перезапись
|
Просто записываем значение свойства:
data[идентификатор] = {данные}
Если такое свойство (идентификатор) уже есть в объекте data, то его данные заменится новыми, иначе в data будет добавлено новое свойство (идентификатор) с данными.
Если есть необходимость узнать есть ли свойство (идентификатор) в объекте, то можно получить свойства объекта в массив и в нем проверить:
if(~Object.keys(data).indexOf(свойство)) {
//есть такое свойство у объекта
}
PS. Тут важен контекст понятия "узнать", можно ведь просто проверить что вернет обращение к свойству объекта, а не перебирать ключи.
PS. А удалить свойство объекта - delete data[свойство]
Последний раз редактировалось laimas, 03.07.2017 в 14:38.
|
|
03.07.2017, 17:33
|
Кандидат Javascript-наук
|
|
Регистрация: 13.12.2013
Сообщений: 110
|
|
Подскажите еще такой вопрос.
Я делаю ключь
var key = tov_key+key_ves+key_name;
alert(key);
var tovar_list = {key:{
"tovar":"tovar_27",
"price":"362"
}};
И на выходе получаю
key:{"tovar":"tovar_27","price":"362"} -- а надо чтобы key изменилось на то что я указывал а не названием переменной.
И еще такой момент как я могу сжать key предположим он будет в длину 450 символов что и есть неудобно и превести его в единый формат типа Base64 или MD5 нашел статейки но так и не понял почему не работает
|
|
03.07.2017, 17:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от biryukovm
|
Я делаю ключь
|
Ключ, а не ключ ь, чай не блондинка.
Сообщение от biryukovm
|
var key = tov_key+key_ves+key_name
|
Это что?
Сообщение от biryukovm
|
а надо чтобы key изменилось на то что я указывал а не названием переменной
|
Вы говорили, что в РНР разбираетесь. Тогда чтобы понятней было, будем оперировать им. У вас есть массив:
$a = [
'as' => 'value',
25 => 'value'
]
Вопрос - можно ли кличи этого массива переименовать?
|
|
03.07.2017, 17:47
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от biryukovm
|
я могу сжать key предположим он будет в длину 450 символов что и есть неудобно и превести его в единый формат типа Base64 или MD5
|
Хрен знает что вы там делаете, поэтому даже не понимаю о чем речь, но если до такого дошло, то это нечто. )
Кстати, Base64, это скорее экспандер, а не сжиматель, так как результат будет в три раза длиннее исходного, а MD5, это хеш.
|
|
03.07.2017, 21:03
|
Кандидат Javascript-наук
|
|
Регистрация: 13.12.2013
Сообщений: 110
|
|
Сообщение от laimas
|
Хрен знает что вы там делаете, поэтому даже не понимаю о чем речь, но если до такого дошло, то это нечто. )
Кстати, Base64, это скорее экспандер, а не сжиматель, так как результат будет в три раза длиннее исходного, а MD5, это хеш.
|
Тут все по серьезному только для взрослых
|
|
03.07.2017, 21:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от biryukovm
|
Тут все по серьезному только для взрослых
|
Глупости все это, хотя хрен знает чего вы там изобретаете. Но сам вопрос "как переименовать свойство" наводит на мысли нехорошие, чего-то не то и не так делается. )
|
|
04.07.2017, 06:51
|
Кандидат Javascript-наук
|
|
Регистрация: 13.12.2013
Сообщений: 110
|
|
Ну в общем вот массив который у меня формируется:
[
{"key":"16a3f79f7f1abc856e3a897ed5c71616","param":{"tip":"1","tip2":"tewer"}},
{"key":"1a79c7ebdb390269cca0d2675ef78204","param":{"tip":"1","tip2":"sik"}},
{"key":"83bec884740a900a86f06a0963f07e82","param":{"tip":"1","tip2":"anlo"}}
]
Я за место Object.keys(data).indexOf пошел немного другим методом
var val,param,num_s = 0;
for (val of data) {
num_s++;
param = JSON.stringify(val);
alert(param.key+' = '+num_s)
}
Если я пишу alert(param+' = '+num_s) то выводит каждую строку:
[{"key":"83bec884740a900a86f06a0963f07e82","param":{"tip":"1","tip2":"anlo"}}]
В интернете пересмотрел методы перебора массивов и там не описано более сложный формат
В итоге я пробывал и так
alert(param.key+' = '+num_s)
И так
alert(param[1]+' = '+num_s)
И так
alert(param[0].key+' = '+num_s)
В итоге так и не могу вытащить нужный мне параметр "key" выдет постоянно "undefined"
Как его правильно указать ?
Последний раз редактировалось biryukovm, 04.07.2017 в 06:56.
|
|
04.07.2017, 07:10
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Так как вы представляете свои объекты через .... понятно что, поэтому и маетесь. Ну была мысль в правильном направлении - не массив, а объект объектов.
Что это вообще за хрень такая "key":"83bec884740a900a86f06a0963f07e82", то что вы и пытаетесь переименовать? Хрен с ним, переименовывайте, но у этой сущности тем более должен быть уникальный идентификатор, иначе она будет потеряна.
for (val of data) { ... у вас массив объектов, и если перебирать циклом для поиска, то обычный
for(var i=0; i< data.length; i++) {
if(data[i].key == 'hash') {
//что-то делаем
break;
}
}
|
|
04.07.2017, 07:15
|
Кандидат Javascript-наук
|
|
Регистрация: 13.12.2013
Сообщений: 110
|
|
Сообщение от laimas
|
Что это вообще за хрень такая "key":"83bec884740a900a86f06a0963f07e82", то что вы и пытаетесь переименовать? Хрен с ним, переименовывайте, но у этой сущности тем более должен быть уникальный идентификатор, иначе она будет потеряна.
|
Эта хрень и есть идентификатор, а точнее основные параметры товара переведены в MD5, я думаю что это сравнивать легче чем строку в 350 символов
|
|
04.07.2017, 07:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от biryukovm
|
Эта хрень и есть идентификатор, а точнее основные параметры товара переведены в MD5
|
Вообще охренеть. Идентификатор по параметрам товара? Это нечто. Идентификатор сущности в базе, это некое уникальное значение, которое может быть сформировано средствами SQL автоматически при добавлении сущности в базу. Делается это просто - полем типа INT с первичным ключом и автоикрементом.
Некие ключи по параметрам, это уже иное, причем если товаров много, то гарантии того, что среди них нет с одинаковыми параметрами, а значит и уникальности таких ключей, нет и все ваше накроется медным тазом. )
|
|
|
|