Javascript 在和每个循环中使用for..的Order元素
我试图弄清楚如何在for..in循环中,在另一个each循环中,在订单的数组中循环订购物品Javascript 在和每个循环中使用for..的Order元素,javascript,jquery,for-loop,each,Javascript,Jquery,For Loop,Each,我试图弄清楚如何在for..in循环中,在另一个each循环中,在订单的数组中循环订购物品 var index = 0; for (var site in dataObj.sites) { var itemList = '<li id="' + index + '">' + site + '</li>'; $.each(dataObj.order, function(i, id) { console.log(i, id);
var index = 0;
for (var site in dataObj.sites) {
var itemList = '<li id="' + index + '">' + site + '</li>';
$.each(dataObj.order, function(i, id) {
console.log(i, id);
$(itemList).appendTo('.list-social .social-wrapper');
});
index++;
}
我有一个包含我的数据的对象:
dataObj = {
"sites":{
"dribbble":{
// ID = 0
"username":"JeremDsgn"
},
"behance":{
// ID = 1
"username":"JeremDsgn"
},
"cinqcentpx":{
// ID = 2
"username":"jeremdsgn"
}
},
"order":["1","2","0"]
};
实际上,我为显示循环中的每个项目添加了id,但是在对象中添加id
会更好吗
因此,之后,我尝试使用订单的数组来显示我的项目
var index = 0;
for (var site in dataObj.sites) {
var itemList = '<li id="' + index + '">' + site + '</li>';
$.each(dataObj.order, function(i, id) {
console.log(i, id);
$(itemList).appendTo('.list-social .social-wrapper');
});
index++;
}
var指数=0;
用于(数据对象站点中的var站点){
var itemList='“+site+' ”;
$.each(dataObj.order,function(i,id){
控制台日志(i,id);
$(itemList.appendTo('.list-social.social-wrapper');
});
索引++;
}
但是我复制了我的站点3次,因为此时我的dataObj.sites对象上有3个元素
那个么,如何才能以良好的顺序显示我的项目列表呢?最终结果应该是:
<div class="list-social">
<ul class="social-wrapper">
<li id="1">behance</li>
<li id="2">cinqcentpx</li>
<li id="0">dribbble</li>
</ul>
</div>
行为
cinqcentpx
- 带球
提琴:我不确定你想做什么,但也许这把提琴有帮助? 我没有使用索引和字符串数字的顺序列表,而是简单地将顺序列表更改为站点键本身,然后创建一个列表项并将其添加到找到的每个.social包装器中
dataObj = {
"sites":{
"dribbble":{
"username":"JeremDsgn"
},
"behance":{
"username":"JeremDsgn"
},
"cinqcentpx":{
"username":"jeremdsgn"
}
},
"order":["cinqcentpx", "behance", "dribbble"]
};
for (var i = 0; i < dataObj.order.length; i++) {
var siteName = dataObj.order[i];
var itemList = $('<li/>').attr('id', i).text(siteName + ': ' + dataObj.sites[siteName].username);
$(itemList).appendTo('.list-social .social-wrapper');
}
dataObj={
“地点”:{
“带球”:{
“用户名”:“Jeremidsgn”
},
“行为”:{
“用户名”:“Jeremidsgn”
},
“cinqcentpx”:{
“用户名”:“Jeremidsgn”
}
},
“订单”:[“cinqcentpx”、“behance”、“Dribble”]
};
对于(变量i=0;i').attr('id',i).text(siteName+':'+dataObj.sites[siteName].username);
$(itemList.appendTo('.list-social.social-wrapper');
}
编辑以实际回答问题:)试试这个。成功了
$.each(dataObj.order, function(i, id) {
console.log(i, id);
var index = 0;
for (var site in dataObj.sites) {
console.log(index);
if(index==id){
console.log("equal",id,index,site);
var itemList = '<li id="' + index + '">' + site + '</li>';
$(itemList).appendTo('.list-social .social-wrapper');
break;
}
index++;
}
});
$。每个(dataObj.order,函数(i,id){
控制台日志(i,id);
var指数=0;
用于(数据对象站点中的var站点){
控制台日志(索引);
如果(索引==id){
控制台日志(“相等”、id、索引、站点);
var itemList='“+site+' ”;
$(itemList.appendTo('.list-social.social-wrapper');
打破
}
索引++;
}
});
问题出在语句中的。这是不能保证订单的部分。相反,使用for
语句(或$.each
)迭代dataObj.order
数组,而不是给它索引,而是按您要访问的顺序给它每个dataObj.sites
属性的名称<代码>顺序:[“behance”、“cinqcentpx”、“dribbble”]
然后你也要将ID添加到每个对象中。我一点也不清楚。因为实际上我已经用each循环遍历了dataObj.order……如果ID真的要对应于每个对象的从零开始的索引,那么对象数组似乎更有意义。您没有使用dataObj.order
列表。Object.keys()
不保证任何特定顺序,就像中的一样。我应该只有三个li项,另一个是重复项,我不知道如何不重复它们。如果可能的话,我宁愿保留订单号。