如何用jQuery修改json数组

时间:2010-05-18 21:52:55

标签: jquery json

我的代码中有以下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 }
];

我可以使用jQuery访问或迭代这个没有问题。但是出现了一种情况,我需要更改其中一个项的值(例如,将ishidden属性更改为true的{​​{1}}),然后针对它运行一些其他jQuery函数。这可能吗?还是我必须重新构建整个对象?如果可能,我该如何实现?

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:12)

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;

从长远来看,这将节省一些时间。

答案 1 :(得分:8)

试试这个:

for (var i = 0; i < groups.length; i++){
 if (groups[i].gid == 28){ 
     groups[i].ishidden = true;
     break;
 }
}

答案 2 :(得分:3)

我会说贾斯汀的答案更好,但是,我会添加这个微妙的修改

var lim = groups.length;
for (var i = 0; i < lim; i++){
 if (groups[i].gid == 28){ 
     groups[i].ishidden = true;
     break;
 }
}