как изменить массив json с jQuery

У меня есть следующий json массив объектов в моем коде

var groups = [
{ "gid": 28, "name": "Group 1", "ishidden": false, "isprivate": false },
{ "gid": 16, "name": "Group 2", "ishidden": true, "isprivate": false },
{ "gid": 31, "name": "Group 3", "ishidden": true, "isprivate": false },
{ "gid": 11, "name": "Group 4", "ishidden": false, "isprivate": false },
{ "gid": 23, "name": "Group 5", "ishidden": false, "isprivate": false }
];

Я могу получить доступ или выполнить итерации через это без problm использования jQuery. Однако ситуация возникла, где я должен изменить значение одного из объектов (например, измениться ishidden свойство к true для gid: 28) и затем выполненный некоторый другой jQuery функционируют против него. Действительно ли это возможно? или я должен восстановить целый объект? Если возможно, как я могу достигнуть этого?

любая справка ценилась бы!

10
задан Kemal Emin 18 May 2010 в 21:52
поделиться

3 ответа

Я бы сказал, что ответ Джастина лучше, однако я бы добавил эту тонкую модификацию

var lim = groups.length;
for (var i = 0; i < lim; i++){
 if (groups[i].gid == 28){ 
     groups[i].ishidden = true;
     break;
 }
}
4
ответ дан 3 December 2019 в 16:51
поделиться

Стиль jQuery будет:

$(groups).each( function() {
  if (this.gid == 28) this.ishidden = true;
});

Но в качестве альтернативы вы можете создать индекс:

var index = {};
$(groups).each( function() { index[this.gid] = this; } );

// and then
index["28"].ishidden = true;

Это сэкономит время в долгосрочной перспективе.

12
ответ дан 3 December 2019 в 16:51
поделиться

Попробуйте следующее:

for (var i = 0; i < groups.length; i++){
 if (groups[i].gid == 28){ 
     groups[i].ishidden = true;
     break;
 }
}
8
ответ дан 3 December 2019 в 16:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: