javascript 求json对象的笛卡尔乘积

来源:互联网 发布:成都卧龙大数据创始人 编辑:程序博客网 时间:2024/05/16 06:08
/** * 笛卡尔乘积对象 */var cross_join = {/** * 参考例子 * cross_join.json_data = [ *   [1,2,3], *   ['a','b','c','d'], *   ['x','y'], *   ['i','j','k'] *  ]; */json_data:[],//笛卡尔乘积的数据json_data_format:function(data){//json数据项的格式化,需要在具体的业务中重写return data;},json_obj_format:function(json){//json对象的格式化,内部调用var result = [];for(var i=0; i<json.length; i++){var len = result.length;result[len] = cross_join.json_data_format(json[i]);}return result;},json_get_list:function(){//外部调用,得到笛卡尔乘积的对象数据if(cross_join.json_data.length == 0){//如果json_data为空,则返回空对象return [];}//合并list的内部函数var join_list = function(part1,part2){var result = [];for(var i=0; i<part1.length; i++){for(var j=0; j<part2.length; j++){var len = result.length;result[len] = part1[i] + cross_join.json_data_format(part2[j]);}}return result;};var result = cross_join.json_obj_format(cross_join.json_data[0]);//初始化第一个json对象的格式化for(var i=1; i<cross_join.json_data.length; i++){result = join_list(result, cross_join.json_data[i]);}return result;}};


调用实例:

cross_join.json_data = [                        [1,2,3],                        ['a','b','c','d'],                        ['x','y'],                        ['i','j','k']                    ];cross_join.json_data_format = function(data){return '<td>'+data+'</td>';}var td = cross_join.json_get_list();for(var i=0; i<td.length; i++){alert(td[i]);}



原创粉丝点击