Javascript关于JSON集合的几种循环步骤

Javascript关于JSON集合的几种循环方法
/**
 * 根据json数据生成option树形控件
 * 如果有children节点则自动生成树形数据
 * @param {JSON} data
 * @param {int} n 节点深度
 * @param {string} char 节点名称前缀
 * @returns {string}
 * @since 1.0 2014-8-22 by sutroon
 * @example
 *      var data = (typeof (data) == "object") ? data : $.parseJSON(data);
 *      var str = '';
 *      str=generate_options(data);
 */
function generate_options(data, n, char) {
    if (n == undefined) {
        n = 0;
    }
    if (char == undefined) {
        char = '..';
    }
    var pad = '';
    while (n > 0) {
        pad += char;
        n--;
    }
    var str = '';
    if (data.length) {
        // 多行格式
        for (var i = 0; i < data.length; i++) {
            if (data[i].id) {
                // 用于[{"id":"1","name":"name1"}]格式                
                str += '<option value="' + data[i].id + '">' + pad + (data[i].name ? data[i].name : data[i].text) + '</option>';
            } else if (data[i].item) {
                // 用于[{"item":"1"},{"item":"2"}]
                str += '<option value="' + data[i].item + '">' + pad + data[i].item + '</option>';
            } else {
                // 用于{"item1","item2"}格式
                str += '<option value="' + data[i] + '">' + pad + data[i] + '</option>';
            }
            if (data[i].children) {
                str += generate_options(data[i].children, n + 1, char);
            }
        }
    }
    else {
        // 用于{"a":"a1","b":"b2"}单行格式
        for (var attr in data) {
            str += '<option value="' + attr + '">' + data[attr] + '</option>';
        }
    }
    return str;
}

版权声明:本文原著天澜(14507247#qq.com),版权遵循知识共享许可协议[查看]。您可*转载收藏,但请留此声明,感谢!

1楼回眸不笑
// // 用于[{quot;itemquot;:quot;1quot