Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在和每个循环中使用for..的Order元素_Javascript_Jquery_For Loop_Each - Fatal编程技术网

Javascript 在和每个循环中使用for..的Order元素

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);

我试图弄清楚如何在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);
        $(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项,另一个是重复项,我不知道如何不重复它们。如果可能的话,我宁愿保留订单号。