
06.02.2018, 09:42
|
Интересующийся
|
|
Регистрация: 06.02.2018
Сообщений: 10
|
|
Удалить из JSON массива
$('body').on('click','.fav',function(){
var id = $(this).attr('id');
favorities(id);
});
function favorities(id){
var cookie = $.cookie('good');
if(cookie != null){
var book = JSON.parse(cookie);
}else{
var book = [];
}
booktemp = { "id" : id };
book.push(booktemp);
fav = JSON.stringify(book);
$.cookie('good', fav, { path: '/', expires: 1 });
Получаю следующее:
Код:
|
[{"id":"200"},{"id":"199"},{"id":"198"},{"id":"192"},{"id":"195"},{"id":"191"},{"id":"192"},{"id":"191"},{"id":"195"},{"id":"194"},{"id":"190"}] |
Как удалить {"id":"198"} ?
Последний раз редактировалось zhenia3003, 06.02.2018 в 09:51.
|
|

06.02.2018, 10:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Если объекты имеют только одно свойство, то проще иметь один массив, а не массив объектов.
|
|

06.02.2018, 10:15
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,252
|
|
Сообщение от zhenia3003
|
Как удалить {"id":"198"} ?
|
Как вариант...
var str='[{"id":"200"},{"id":"199"},{"id":"198"},{"id":"192"},{"id":"195"},{"id":"191"},{"id":"192"},{"id":"191"},{"id":"195"},{"id":"194"},{"id":"190"}]';
alert(str.replace(/{"id":"198"},/,''));
|
|

06.02.2018, 10:17
|
Интересующийся
|
|
Регистрация: 06.02.2018
Сообщений: 10
|
|
Спасибо за ответы, навели на мысль про один массив, удаляю через splice
var cookie = $.cookie('good');
if(cookie != null){
var book = JSON.parse(cookie);
}else{
var book = [];
}
if(book.indexOf(id) != '-1'){
book.splice(book.indexOf(id), 1);
}else{
book.push(id);
}
fav = JSON.stringify(book);
alert(fav);
$.cookie('good', fav, { path: '/', expires: 1 });
|
|

06.02.2018, 10:22
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
zhenia3003,
<script>
var data = [{"id":"200"},{"id":"199"},{"id":"198"},{"id":"192"},{"id":"195"},{"id":"191"},{"id":"192"},{"id":"191"},{"id":"195"},{"id":"194"},{"id":"190"}]
function deleteId(data, id)
{
for (var i = data.length, el; el = data[--i];) {
if(el.id == id) data.splice(i,1)
}
return data
}
document.write(JSON.stringify(deleteId(data, 198)))
</script>
|
|

06.02.2018, 11:08
|
Интересующийся
|
|
Регистрация: 06.02.2018
Сообщений: 10
|
|
Спасибо, интересный вариант, я пытался что-то подобное через each сделать, но почему-то не срабатывал push
|
|

06.02.2018, 11:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от zhenia3003
|
пытался что-то подобное через each сделать
|
Тогда уж filter использовать
<script>var data = [{"id":"200"},{"id":"199"},{"id":"198"},{"id":"192"},{"id":"195"},{"id":"191"},{"id":"192"},{"id":"191"},{"id":"195"},{"id":"194"},{"id":"190"}]
data = data.filter(function(v) {
return this != v.id
}, 198);
document.write(JSON.stringify(data))
</script>
|
|

06.02.2018, 12:30
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
Сообщение от laimas
|
Тогда уж filter
|
если id уникально
|
|

06.02.2018, 12:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
если id уникально
|
А как ID вообще может быть не уникальным?
|
|

06.02.2018, 12:39
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сообщение от laimas
|
А как ID вообще может быть не уникальным?
|
а вот так
<div id="id1"></div>
<div id="id1"></div>
<div id="id1"></div>
|
|
|
|