我将以下JSON对象加载到我的应用程序中并存储到名为obj:
的var中{
"items" : [
{
"name" : "item-1",
"group" : [
{
"groupName" : "name-1",
"groupPosition" : 2
},
{
"groupName" : "name-2",
"groupPosition" : 1
}]
},
{
"name" : "item-2",
"group" : [
{
"groupName" : "name-1",
"groupPosition" : 1
},
{
"groupName" : "name-2",
"groupPosition" : 2
}]
}]
}
然后我会执行以下操作来完成它:
var groups = new Array();
var items = new Array();
$.each(obj.items, function(i,r){
var itemName = r.name;
$.each(r.group, function(index, record){
if ($.inArray(record.groupName) == -1) {
groups.push(record.groupName);
$('body').append('<div id="record.groupName"></div>');
}
$('#'+record.groupName).append('<div id="itemName">itemName</div>');
// At this point I'm stuck as the items get added in order of iteration,
// not according to their record.groupPosition value.
});
});
最终将有数百个“项目”包含在未设置数量的“组”中。
我遇到的麻烦是如何使用jQuery或好的ol'JavaScript迭代JSON对象,并在每个组中的正确位置显示项目,因为项目和组不会列在JSON对象中顺序。
非常感谢任何帮助!
谢谢。
答案 0 :(得分:2)
为什么不直接给组项目提供位置索引:
{
"items" : [
{
"name" : "item-1",
"group" : {
2:{
"groupName" : "name-1",
"groupPosition" : 2
},
1:{
"groupName" : "name-2",
"groupPosition" : 1
}}
},
{
"name" : "item-2",
"group" : {
1:{
"groupName" : "name-1",
"groupPosition" : 1
},
2:{
"groupName" : "name-2",
"groupPosition" : 2
}}
}]
}
答案 1 :(得分:0)
假设您有一个分配给它的变量:
var data = ...
您可以使用$.each()
方法:
$.each(data.items, function(index, item) {
// here item.name will contain the name
// and if you wanted to fetch the groups you could loop through them as well:
$.each(item.group, function(i, group) {
// here you can use group.groupName and group.groupPosition
});
});
javascript中的数组([]
)基于0索引,并在迭代它们时保留它们的顺序。
答案 2 :(得分:0)
如果我正确地理解了你的问题,那不是它自己的排序,而是如何将它们链接到你的dom节点,解决方案:使用带数字的类。
例如:
$(".group"+items[1].group[0].grouposition").append(items[1].group[0].name);
// this will give append to the element with class="group1"
如果你加入这个生成的html结构以匹配相同的名称,那么它就不会有问题而且你不必对它们进行排序