I have the following json array of objects in my code
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开发者_如何学C, "name": "Group 5", "ishidden": false, "isprivate": false }
];
I can access or iterate through this with no problm using jQuery. However a situation arose where I need to change a value of one of the items (e.g. change the ishidden
property to true
for gid: 28
) and then run some other jQuery function against it. Is this possible? or do I have to re-build the whole object ? If possible, how can I achieve this?
any help would be appreciated!
jQuery style would be:
$(groups).each( function() {
if (this.gid == 28) this.ishidden = true;
});
But alternatively you can create an index:
var index = {};
$(groups).each( function() { index[this.gid] = this; } );
// and then
index["28"].ishidden = true;
This would save some time in the long run.
Try this:
for (var i = 0; i < groups.length; i++){
if (groups[i].gid == 28){
groups[i].ishidden = true;
break;
}
}
I would say the Justin answer is better, however, I would add this subtle modification
var lim = groups.length;
for (var i = 0; i < lim; i++){
if (groups[i].gid == 28){
groups[i].ishidden = true;
break;
}
}
精彩评论