行优先和列优先的算法

算法过度有简单到难 直接上代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>行优先和列优先的处理</title>
    <link type="text/css" href="rest.css" rel="stylesheet"/>
    <style>
        table {border-right:1px  solid #343c99;  border-top:1px  solid #343c99;}
        table  td{min-width: 100px; padding: 0 15px;text-align: center; height:25px; line-height: 25px;  border-left:1px  solid #343c99;  border-bottom:1px  solid #343c99;}
        p{ line-height: 35px;}
        div{padding-left: 69px;}
    </style>
</head>
<body>
<div>
    <p>我是行优先</p>
    <table>

        <tbody id="row"></tbody>
    </table>
</div>
<div><p>我是列优先</p>
    <table>
        <tbody id="col"></tbody>
    </table>
</div>
<script>

    //转换矩阵数组
   /* var listAll=[], step;
    for(var i=0;i<list.length;i++) {

        var item = list[i];
        var j= 0;
        for(var name in item){
            var obj={};

            obj["rowIndex"]=i;
            obj["colIndex"]=j;
            obj[name]=item[name];
            listAll.push(obj);
            j++;
            step=j;
        }

    }

//行优先
        for(var i=0;i<listAll.length;){
            // str+= list[i][j];
            for(var j=0;j<step;j++){
               str+= list[i][j];

                i++
            }



        }


    //列优先=
    /!*[11,12,13]
    [21,22,23]*!/  //输出的是 11,21,12,22,  13 23

    for(var i=0;i<list.length;i++){
       for(var name in list[0]){
           var j=0;


           j++;
       }
    }
*/
    var list=[{name:"me",age:33},{name:"me2",age:44},{name:"me2",age:44},{name:"me3",age:44}];
    //行优先
    var html="<tr><td>姓名</td><td>年龄</td></tr>"
    for(var i=0;i<list.length;i++) {
        var item = list[i];
        var str="";
        for(var name in item){
                str += "<td>" +item[name]+"</td>";

        }
        html+="<tr>"+str+"</tr>";
    }
  //  document.getElementById("col").innerHTML=html;
    //列优先=
    var html=""
    for(var name in list[0]) {
        var str = "";
        for (var i = 0; i < list.length; i++) {

            str += "<td>" + list[i][name] + "</td>";
        }
        if ("name" == name) {
            html += "<tr>" + "<td>姓名</td>" + str + "</tr>";
        }
        if (name == "age") {
            html += "<tr>" + "<td>年龄</td>" + str + "</tr>";
        }

    }
    //document.getElementById("row").innerHTML=html;
    /*
    * list:要呈现的数据*
    *hasData 列名 *
     * type  行优先row  列优先 col*
     * */
    var list=[
        {name:"me",age:33,sex:0,school:{schoolName:"三中","className":"三年级三班"}}
        ,{name:"me2",age:44,sex:1,school:{schoolName:"三中","className":"三年级一班"}}
        ,{name:"me2",age:44,sex:0,school:{schoolName:"三中","className":"二年级三班"}}
        ,{name:"me3",age:44,sex:0,school:{schoolName:"三中","className":"三年级一班"}}
    ];
    var hasData= {
        name: {value: '姓名'},
        age: {value: '年龄'},
        sex: {
            value: '性别', format: function (value) {
                return value == 0 ? "男" : "女"
            }
        },
        school:{value:"所在学校",format:function(data){
            return data.schoolName+data.className;
        }}
    }
    var rowAndCol=function(data,hasData,type){
     var tdString="<td>{{}}</td>",trString="<tr>{{}}</tr>",html="";
        if(type=="row"){
            for(var i=0;i<list.length;i++) {
                var item = list[i];
                var str="";
                for(var name in item){
                    if(hasData[name].format) {
                        str += tdString.replace("{{}}", hasData[name].format(item[name]));
                    }else{
                        str += tdString.replace("{{}}", item[name]);
                    }
                    if(i==0){// 绘制表头
                        html+=tdString.replace("{{}}",hasData[name].value);
                    }
                }
                if(i==0){
                    html=trString.replace("{{}}",html);//添加表头
                    html+=trString.replace("{{}}",str);
                }else{
                    html+=trString.replace("{{}}",str);
                }

            }

        }else if(type=="col"){
            for(var name in hasData) {
                var str = "";
                for (var i = 0; i < list.length; i++) {
                     var item=list[i];
                    if(hasData[name].format) {
                        str += tdString.replace("{{}}", hasData[name].format(item[name]));
                    }else{
                        str += tdString.replace("{{}}", item[name]);
                    }
                }
                html +=trString.replace("{{}}",tdString.replace("{{}}",hasData[name].value)+str);

            }
        }
        return html
    }
    document.getElementById("row").innerHTML=rowAndCol(list,hasData,"row");
    document.getElementById("col").innerHTML=rowAndCol(list,hasData,"col");
</script>
</body>
住:rest.css 代码

/*
html5doctor.com Reset Stylesheet
v1.4.1
2016-01-03
*/

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
    margin:0;
    padding:0;
    border:0;
    outline:0;
    font-size:100%;
    vertical-align:baseline;
    background:transparent;
}

body {
    line-height:1;
}

:focus {
    outline: 1;
}

article,aside,canvas,details,figcaption,figure,
footer,header,hgroup,menu,nav,section,summary {
    display:block;
}

nav ul {
    list-style:none;
}

blockquote, q {
    quotes:none;
}

blockquote:before, blockquote:after,
q:before, q:after {
    content:'';
    content:none;
}

a {
    margin:0;
    padding:0;
    border:0;
    font-size:100%;
    vertical-align:baseline;
    background:transparent;
}

ins {
    background-color:#ff9;
    color:#000;
    text-decoration:none;
}

mark {
    background-color:#ff9;
    color:#000;
    font-style:italic;
    font-weight:bold;
}

del {
    text-decoration: line-through;
}

abbr[title], dfn[title] {
    border-bottom:1px dotted #000;
    cursor:help;
}

table {
    border-collapse:collapse;
    border-spacing:0;
}

hr {
    display:block;
    height:1px;
    border:0;
    border-top:1px solid #cccccc;
    margin:1em 0;
    padding:0;
}

input, select {
    vertical-align:middle;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值