使用js写的一个随机分组

在这里插入图片描述
在这里插入图片描述
template-web.js

/*! art-template@4.13.1 for browser | https://github.com/aui/art-template */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.template=t():e.template=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";var r=n(6),i=n(2),o=n(22),s=function(e,t){t.onerror(e,t);var n=function(){return"{Template Error}"};return n.mappings=[],n.sourcesContent=[],n},a=function u(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};"string"!=typeof e?t=e:t.source=e,t=i.$extend(t),e=t.source,!0===t.debug&&(t.cache=!1,t.minimize=!1,t.compileDebug=!0),t.compileDebug&&(t.minimize=!1),t.filename&&(t.filename=t.resolveFilename(t.filename,t));var n=t.filename,a=t.cache,c=t.caches;if(a&&n){var l=c.get(n);if(l)return l}if(!e)try{e=t.loader(n,t),t.source=e}catch(m){var f=new o({name:"CompileError",path:n,message:"template not found: "+m.message,stack:m.stack});if(t.bail)throw f;return s(f,t)}var p=void 0,h=new r(t);try{p=h.build()}catch(f){if(f=new o(f),t.bail)throw f;return s(f,t)}var d=function(e,n){try{return p(e,n)}catch(f){if(!t.compileDebug)return t.cache=!1,t.compileDebug=!0,u(t)(e,n);if(f=new o(f),t.bail)throw f;return s(f,t)()}};return d.mappings=p.mappings,d.sourcesContent=p.sourcesContent,d.toString=function(){return p.toString()},a&&n&&c.set(n,d),d};a.Compiler=r,e.exports=a},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},function(e,t,n){"use strict";function r(){this.$extend=function(e){return e=e||{},o(e,e instanceof r?e:this)}}var i=n(10),o=n(12),s=n(13),a=n(14),u=n(15),c=n(16),l=n(17),f=n(18),p=n(19),h=n(21),d="undefined"==typeof window,m={source:null,filename:null,rules:[f,l],escape:!0,debug:!!d&&"production"!==process.env.NODE_ENV,bail:!0,cache:!0,minimize:!0,compileDebug:!1,resolveFilename:h,include:s,htmlMinifier:p,htmlMinifierOptions:{collapseWhitespace:!0,minifyCSS:!0,minifyJS:!0,ignoreCustomFragments:[]},onerror:a,loader:c,caches:u,root:"/",extname:".art",ignore:[],imports:i};r.prototype=m,e.exports=new r},function(e,t){},function(e,t,n){"use strict";var r=n(5),i=n(0),o=n(23),s=function(e,t){return t instanceof Object?r({filename:e},t):i({filename:e,source:t})};s.render=r,s.compile=i,s.defaults=o,e.exports=s},function(e,t,n){"use strict";var r=n(0),i=function(e,t,n){return r(e,n)(t)};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(7),u=n(9),c="$data",l="$imports",f="print",p="include",h="extend",d="block",m="$$out",v="$$line",g="$$blocks",y="$$slice",b="$$from",w="$$options",x=function(e,t){return Object.hasOwnProperty.call(e,t)},k=JSON.stringify,E=function(){function e(t){var n,s,a=this;o(this,e);var x=t.source,k=t.minimize,E=t.htmlMinifier;if(this.options=t,this.stacks=[],this.context=[],this.scripts=[],this.CONTEXT_MAP={},this.ignore=[c,l,w].concat(i(t.ignore)),this.internal=(n={},r(n,m,"''"),r(n,v,"[0,0]"),r(n,g,"arguments[1]||{}"),r(n,b,"null"),r(n,f,"function(){var s=''.concat.apply('',arguments);"+m+"+=s;return s}"),r(n,p,"function(src,data){var s="+w+".include(src,data||"+c+",arguments[2]||"+g+","+w+");"+m+"+=s;return s}"),r(n,h,"function(from){"+b+"=from}"),r(n,y,"function(c,p,s){p="+m+";"+m+"='';c();s="+m+";"+m+"=p+s;return s}"),r(n,d,"function(){var a=arguments,s;if(typeof a[0]==='function'){return "+y+"(a[0])}else if("+b+"){if(!"+g+"[a[0]]){"+g+"[a[0]]="+y+"(a[1])}else{"+m+"+="+g+"[a[0]]}}else{s="+g+"[a[0]];if(typeof s==='string'){"+m+"+=s}else{s="+y+"(a[1])}return s}}"),n),this.dependencies=(s={},r(s,f,[m]),r(s,p,[m,w,c,g]),r(s,h,[b,p]),r(s,d,[y,b,m,g]),s),this.importContext(m),t.compileDebug&&this.importContext(v),k)try{x=E(x,t)}catch(T){}this.source=x,this.getTplTokens(x,t.rules,this).forEach(function(e){e.type===u.TYPE_STRING?a.parseString(e):a.parseExpression(e)})}return s(e,[{key:"getTplTokens",value:function(){return u.apply(undefined,arguments)}},{key:"getEsTokens",value:function(e){return a(e)}},{key:"getVariables",value:function(e){var t=!1;return e.filter(function(e){return"whitespace"!==e.type&&"comment"!==e.type}).filter(function(e){return"name"===e.type&&!t||(t="punctuator"===e.type&&"."===e.value,!1)}).map(function(e){return e.value})}},{key:"importContext",value:function(e){var t=this,n="",r=this.internal,i=this.dependencies,o=this.ignore,s=this.context,a=this.options,u=a.imports,f=this.CONTEXT_MAP;x(f,e)||-1!==o.indexOf(e)||(x(r,e)?(n=r[e],x(i,e)&&i[e].forEach(function(e){return t.importContext(e)})):n="$escape"===e||"$each"===e||x(u,e)?l+"."+e:c+"."+e,f[e]=n,s.push({name:e,value:n}))}},{key:"parseString",value:function(e){var t=e.value;if(t){var n=m+"+="+k(t);this.scripts.push({source:t,tplToken:e,code:n})}}},{key:"parseExpression",value:function(e){var t=this,n=e.value,r=e.script,i=r.output,o=this.options.escape,s=r.code;i&&(s=!1===o||i===u.TYPE_RAW?m+"+="+r.code:m+"+=$escape("+r.code+")");var a=this.getEsTokens(s);this.getVariables(a).forEach(function(e){return t.importContext(e)}),this.scripts.push({source:n,tplToken:e,code:s})}},{key:"checkExpression",value:function(e){for(var t=[[/^\s*}[\w\W]*?{?[\s;]*$/,""],[/(^[\w\W]*?\([\w\W]*?(?:=>|\([\w\W]*?\))\s*{[\s;]*$)/,"$1})"],[/(^[\w\W]*?\([\w\W]*?\)\s*{[\s;]*$)/,"$1}"]],n=0;n<t.length;){if(t[n][0].test(e)){var r;e=(r=e).replace.apply(r,i(t[n]));break}n++}try{return new Function(e),!0}catch(o){return!1}}},{key:"build",value:function(){var e=this.options,t=this.context,n=this.scripts,r=this.stacks,i=this.source,o=e.filename,s=e.imports,a=[],f=x(this.CONTEXT_MAP,h),d=0,y=function(e,t){var n=t.line,i=t.start,o={generated:{line:r.length+d+1,column:1},original:{line:n+1,column:i+1}};return d+=e.split(/\n/).length-1,o},E=function(e){return e.replace(/^[\t ]+|[\t ]$/g,"")};r.push("function("+c+"){"),r.push("'use strict'"),r.push(c+"="+c+"||{}"),r.push("var "+t.map(function(e){return e.name+"="+e.value}).join(",")),e.compileDebug?(r.push("try{"),n.forEach(function(e){e.tplToken.type===u.TYPE_EXPRESSION&&r.push(v+"=["+[e.tplToken.line,e.tplToken.start].join(",")+"]"),a.push(y(e.code,e.tplToken)),r.push(E(e.code))}),r.push("}catch(error){"),r.push("throw {"+["name:'RuntimeError'","path:"+k(o),"message:error.message","line:"+v+"[0]+1","column:"+v+"[1]+1","source:"+k(i),"stack:error.stack"].join(",")+"}"),r.push("}")):n.forEach(function(e){a.push(y(e.code,e.tplToken)),r.push(E(e.code))}),f&&(r.push(m+"=''"),r.push(p+"("+b+","+c+","+g+")")),r.push("return "+m),r.push("}");var T=r.join("\n");try{var O=new Function(l,w,"return "+T)(s,e);return O.mappings=a,O.sourcesContent=[i],O}catch(P){for(var $=0,j=0,_=0,S=void 0;$<n.length;){var C=n[$];if(!this.checkExpression(C.code)){j=C.tplToken.line,_=C.tplToken.start,S=C.code;break}$++}throw{name:"CompileError",path:o,message:P.message,line:j+1,column:_+1,source:i,generated:S,stack:P.stack}}}}]),e}();E.CONSTS={DATA:c,IMPORTS:l,PRINT:f,INCLUDE:p,EXTEND:h,BLOCK:d,OPTIONS:w,OUT:m,LINE:v,BLOCKS:g,SLICE:y,FROM:b,ESCAPE:"$escape",EACH:"$each"},e.exports=E},function(e,t,n){"use strict";var r=n(8),i=n(1)["default"],o=n(1).matchToToken,s=function(e){return e.match(i).map(function(e){return i.lastIndex=0,o(i.exec(e))}).map(function(e){return"name"===e.type&&r(e.value)&&(e.type="keyword"),e})};e.exports=s},function(e,t,n){"use strict";var r={"abstract":!0,await:!0,"boolean":!0,"break":!0,"byte":!0,"case":!0,"catch":!0,"char":!0,"class":!0,"const":!0,"continue":!0,"debugger":!0,"default":!0,"delete":!0,"do":!0,"double":!0,"else":!0,"enum":!0,"export":!0,"extends":!0,"false":!0,"final":!0,"finally":!0,"float":!0,"for":!0,"function":!0,"goto":!0,"if":!0,"implements":!0,"import":!0,"in":!0,"instanceof":!0,"int":!0,"interface":!0,"let":!0,"long":!0,"native":!0,"new":!0,"null":!0,"package":!0,"private":!0,"protected":!0,"public":!0,"return":!0,"short":!0,"static":!0,"super":!0,"switch":!0,"synchronized":!0,"this":!0,"throw":!0,"transient":!0,"true":!0,"try":!0,"typeof":!0,"var":!0,"void":!0,"volatile":!0,"while":!0,"with":!0,"yield":!0};e.exports=function(e){return r.hasOwnProperty(e)}},function(e,t,n){"use strict";function r(e){var t=new String(e.value);return t.line=e.line,t.start=e.start,t.end=e.end,t}function i(e,t,n){this.type=e,this.value=t,this.script=null,n?(this.line=n.line+n.value.split(/\n/).length-1,this.line===n.line?this.start=n.end:this.start=n.value.length-n.value.lastIndexOf("\n")-1):(this.line=0,this.start=0),this.end=this.start+this.value.length}var o=function(e,t){for(var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},o=[new i("string",e)],s=0;s<t.length;s++)for(var a=t[s],u=a.test.ignoreCase?"ig":"g",c=new RegExp(a.test.source,u),l=0;l<o.length;l++){var f=o[l],p=o[l-1];if("string"===f.type){for(var h=void 0,d=0,m=[],v=f.value;null!==(h=c.exec(v));)h.index>d&&(p=new i("string",v.slice(d,h.index),p),m.push(p)),p=new i("expression",h[0],p),h[0]=r(p),p.script=a.use.apply(n,h),m.push(p),d=h.index+h[0].length;d<v.length&&(p=new i("string",v.slice(d),p),m.push(p)),o.splice.apply(o,[l,1].concat(m)),l+=m.length-1}}return o};o.TYPE_STRING="string",o.TYPE_EXPRESSION="expression",o.TYPE_RAW="raw",o.TYPE_ESCAPE="escape",e.exports=o},function(e,t,n){"use strict";(function(t){function n(e){return"string"!=typeof e&&(e=e===undefined||null===e?"":"function"==typeof e?n(e.call(e)):JSON.stringify(e)),e}function r(e){var t=""+e,n=s.exec(t);if(!n)return e;var r="",i=void 0,o=void 0,a=void 0;for(i=n.index,o=0;i<t.length;i++){switch(t.charCodeAt(i)){case 34:a="&#34;";break;case 38:a="&#38;";break;case 39:a="&#39;";break;case 60:a="&#60;";break;case 62:a="&#62;";break;default:continue}o!==i&&(r+=t.substring(o,i)),o=i+1,r+=a}return o!==i?r+t.substring(o,i):r}/*! art-template@runtime | https://github.com/aui/art-template */
var i="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},o=Object.create(i),s=/["&'<>]/;o.$escape=function(e){return r(n(e))},o.$each=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)t(e[n],n);else for(var i in e)t(e[i],i)},e.exports=o}).call(t,n(11))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=Object.prototype.toString,i=function(e){return null===e?"Null":r.call(e).slice(8,-1)},o=function s(e,t){var n=void 0,r=i(e);if("Object"===r?n=Object.create(t||{}):"Array"===r&&(n=[].concat(t||[])),n){for(var o in e)Object.hasOwnProperty.call(e,o)&&(n[o]=s(e[o],n[o]));return n}return e};e.exports=o},function(e,t,n){"use strict";var r=function(e,t,r,i){var o=n(0);return i=i.$extend({filename:i.resolveFilename(e,i),bail:!0,source:null}),o(i)(t,r)};e.exports=r},function(e,t,n){"use strict";var r=function(e){console.error(e.name,e.message)};e.exports=r},function(e,t,n){"use strict";var r={__data:Object.create(null),set:function(e,t){this.__data[e]=t},get:function(e){return this.__data[e]},reset:function(){this.__data={}}};e.exports=r},function(e,t,n){"use strict";var r="undefined"==typeof window,i=function(e){if(r){return n(3).readFileSync(e,"utf8")}var t=document.getElementById(e);return t.value||t.innerHTML};e.exports=i},function(e,t,n){"use strict";var r={test:/{{([@#]?)[ \t]*(\/?)([\w\W]*?)[ \t]*}}/,use:function(e,t,n,i){var o=this,s=o.options,a=o.getEsTokens(i),u=a.map(function(e){return e.value}),c={},l=void 0,f=!!t&&"raw",p=n+u.shift(),h=function(t,n){console.warn((s.filename||"anonymous")+":"+(e.line+1)+":"+(e.start+1)+"\nTemplate upgrade: {{"+t+"}} -> {{"+n+"}}")};switch("#"===t&&h("#value","@value"),p){case"set":i="var "+u.join("").trim();break;case"if":i="if("+u.join("").trim()+"){";break;case"else":var d=u.indexOf("if");~d?(u.splice(0,d+1),i="}else if("+u.join("").trim()+"){"):i="}else{";break;case"/if":i="}";break;case"each":l=r._split(a),l.shift(),"as"===l[1]&&(h("each object as value index","each object value index"),l.splice(1,1));i="$each("+(l[0]||"$data")+",function("+(l[1]||"$value")+","+(l[2]||"$index")+"){";break;case"/each":i="})";break;case"block":l=r._split(a),l.shift(),i="block("+l.join(",").trim()+",function(){";break;case"/block":i="})";break;case"echo":p="print",h("echo value","value");case"print":case"include":case"extend":if(0!==u.join("").trim().indexOf("(")){l=r._split(a),l.shift(),i=p+"("+l.join(",")+")";break}default:if(~u.indexOf("|")){var m=a.reduce(function(e,t){var n=t.value,r=t.type;return"|"===n?e.push([]):"whitespace"!==r&&"comment"!==r&&(e.length||e.push([]),":"===n&&1===e[e.length-1].length?h("value | filter: argv","value | filter argv"):e[e.length-1].push(t)),e},[]).map(function(e){return r._split(e)});i=m.reduce(function(e,t){var n=t.shift();return t.unshift(e),"$imports."+n+"("+t.join(",")+")"},m.shift().join(" ").trim())}f=f||"escape"}return c.code=i,c.output=f,c},_split:function(e){e=e.filter(function(e){var t=e.type;return"whitespace"!==t&&"comment"!==t});for(var t=0,n=e.shift(),r=/\]|\)/,i=[[n]];t<e.length;){var o=e[t];"punctuator"===o.type||"punctuator"===n.type&&!r.test(n.value)?i[i.length-1].push(o):i.push([o]),n=o,t++}return i.map(function(e){return e.map(function(e){return e.value}).join("")})}};e.exports=r},function(e,t,n){"use strict";var r={test:/<%(#?)((?:==|=#|[=-])?)[ \t]*([\w\W]*?)[ \t]*(-?)%>/,use:function(e,t,n,r){return n={"-":"raw","=":"escape","":!1,"==":"raw","=#":"raw"}[n],t&&(r="/*"+r+"*/",n=!1),{code:r,output:n}}};e.exports=r},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var i="undefined"==typeof window,o=function(e,t){if(i){var o,s=n(20).minify,a=t.htmlMinifierOptions,u=t.rules.map(function(e){return e.test});(o=a.ignoreCustomFragments).push.apply(o,r(u)),e=s(e,a)}return e};e.exports=o},function(e,t){!function(e){e.noop=function(){}}("object"==typeof e&&"object"==typeof e.exports?e.exports:window)},function(e,t,n){"use strict";var r="undefined"==typeof window,i=/^\.+\//,o=function(e,t){if(r){var o=n(3),s=t.root,a=t.extname;if(i.test(e)){var u=t.filename,c=!u||e===u,l=c?s:o.dirname(u);e=o.resolve(l,e)}else e=o.resolve(s,e);o.extname(e)||(e+=a)}return e};e.exports=o},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=e.name,n=e.source,r=e.path,i=e.line,o=e.column,s=e.generated,a=e.message;if(!n)return a;var u=n.split(/\n/),c=Math.max(i-3,0),l=Math.min(u.length,i+3),f=u.slice(c,l).map(function(e,t){var n=t+c+1;return(n===i?" >> ":"    ")+n+"| "+e}).join("\n");return(r||"anonymous")+":"+i+":"+o+"\n"+f+"\n\n"+t+": "+a+(s?"\n   generated: "+s:"")}var a=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e.message));return n.name="TemplateError",n.message=s(e),Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n}return o(t,e),t}(Error);e.exports=a},function(e,t,n){"use strict";e.exports=n(2)}])});

template.js

/*!
 * template_js 2.3.0 (https://github.com/yanhaijing/template)
 * API https://github.com/yanhaijing/template/blob/master/doc/api.md
 * Copyright 2017-2019 yanhaijing. All Rights Reserved
 * Licensed under MIT (https://github.com/yanhaijing/template/blob/master/LICENSE)
 */

(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  typeof define === 'function' && define.amd ? define(factory) :
  (global.template = factory());
}(this, (function () { 'use strict';

  /*!
   * @jsmini/type 0.9.2 (https://github.com/jsmini/type)
   * API https://github.com/jsmini/type/blob/master/doc/api.md
   * Copyright 2017-2019 jsmini. All Rights Reserved
   * Licensed under MIT (https://github.com/jsmini/type/blob/master/LICENSE)
   */

  function _typeof(obj) {
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof = function (obj) {
        return typeof obj;
      };
    } else {
      _typeof = function (obj) {
        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
      };
    }

    return _typeof(obj);
  }

  var toString = Object.prototype.toString;
  function type(x) {
    var strict = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
    strict = !!strict; // fix typeof null = object

    if (x === null) {
      return 'null';
    }

    var t = _typeof(x); // 严格模式 区分NaN和number


    if (strict && t === 'number' && isNaN(x)) {
      return 'nan';
    } // number string boolean undefined symbol


    if (t !== 'object') {
      return t;
    }

    var cls;
    var clsLow;

    try {
      cls = toString.call(x).slice(8, -1);
      clsLow = cls.toLowerCase();
    } catch (e) {
      // ie下的 activex对象
      return 'object';
    }

    if (clsLow !== 'object') {
      if (strict) {
        // 区分NaN和new Number
        if (clsLow === 'number' && isNaN(x)) {
          return 'NaN';
        } // 区分 String() 和 new String()


        if (clsLow === 'number' || clsLow === 'boolean' || clsLow === 'string') {
          return cls;
        }
      }

      return clsLow;
    }

    if (x.constructor == Object) {
      return clsLow;
    } // Object.create(null)


    try {
      // __proto__ 部分早期firefox浏览器
      if (Object.getPrototypeOf(x) === null || x.__proto__ === null) {
        return 'object';
      }
    } catch (e) {} // ie下无Object.getPrototypeOf会报错
    // function A() {}; new A


    try {
      var cname = x.constructor.name;

      if (typeof cname === 'string') {
        return cname;
      }
    } catch (e) {} // 无constructor
    // function A() {}; A.prototype.constructor = null; new A


    return 'unknown';
  }

  /*!
   * @jsmini/is 0.8.5 (https://github.com/jsmini/is)
   * API https://github.com/jsmini/is/blob/master/doc/api.md
   * Copyright 2017-2019 jsmini. All Rights Reserved
   * Licensed under MIT (https://github.com/jsmini/is/blob/master/LICENSE)
   */
  function isObject(x) {
    return type(x) === 'object';
  }
  function isFunction(x) {
    return type(x) === 'function';
  }
  var isArray = isFunction(Array.isArray) ? Array.isArray : function isArray(x) {
    return type(x) === 'array';
  };

  /*!
   * @jsmini/extend 0.3.3 (https://github.com/jsmini/extend)
   * API https://github.com/jsmini/extend/blob/master/doc/api.md
   * Copyright 2017-2019 jsmini. All Rights Reserved
   * Licensed under MIT (https://github.com/jsmini/extend/blob/master/LICENSE)
   */

  function hasOwnProp(obj, key) {
    return Object.prototype.hasOwnProperty.call(obj, key);
  }

  var assign = isFunction(Object.assign) ? Object.assign : function assign(target) {
    if (!isObject(target)) {
      throw new TypeError('assign first param must is object');
    }

    for (var i = 0; i < (arguments.length <= 1 ? 0 : arguments.length - 1); i++) {
      var source = i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1];

      if (isObject(source)) {
        for (var key in source) {
          if (hasOwnProp(source, key)) {
            target[key] = source[key];
          }
        }
      }
    }

    return target;
  };
  function extend() {
    return assign.apply(void 0, arguments);
  }
  function extendDeep(target) {
    // 深拷贝
    if (!isObject(target) && !isArray(target)) {
      throw new TypeError('extend target param must is object');
    }

    for (var i = 0; i < (arguments.length <= 1 ? 0 : arguments.length - 1); i++) {
      var source = i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1];

      for (var name in source) {
        var src = target[name];
        var copy = source[name]; //避免无限循环

        if (target === copy) {
          continue;
        } // 非可枚举属性


        if (!hasOwnProp(source, name)) {
          continue;
        }

        var copyIsArr = void 0;

        if (copy && (isObject(copy) || (copyIsArr = isArray(copy)))) {
          var clone = void 0;

          if (copyIsArr) {
            clone = src && isArray(src) ? src : [];
          } else {
            clone = src && isObject(src) ? src : {};
          }

          target[name] = extendDeep(clone, copy);
        } else if (typeof copy !== 'undefined') {
          target[name] = copy;
        }
      }
    }

    return target;
  }

  /*!
   * @templatejs/parser 2.3.0 (https://github.com/templatejs/parser)
   * API https://github.com/templatejs/parser/blob/master/doc/api.md
   * Copyright 2017-2019 templatejs. All Rights Reserved
   * Licensed under MIT (https://github.com/templatejs/parser/blob/master/LICENSE)
   */

  var defaultOpt = { sTag: '<%', eTag: '%>', escape: true };
  function parsehtml(line) {
      // 单双引号转义
      line = String(line).replace(/('|")/g, '\\$1');
      var lineList = line.split(/\r\n|\n/);
      var code = '';
      for (var i = 0; i < lineList.length; i++) {
          code += ';__code__ += ("' + lineList[i] + (i === lineList.length - 1 ? '")\n' : '\\n")\n');
      }
      return code;
  }
  function parsejs(line, escape) {
      if (escape === void 0) { escape = true; }
      line = String(line);
      escape = !!escape;
      //var reg = /^(:?)(.*?)=(.*)$/;
      var reg = /^(?:=|(:.*?)=)(.*)$/;
      var html;
      var arr;
      var modifier;
      // = := :*=
      // :h=123 [':h=123', 'h', '123']
      if (arr = reg.exec(line)) {
          html = arr[2]; // 输出
          if (arr[1]) {
              // :开头
              modifier = arr[1].slice(1);
          }
          else {
              // = 开头
              modifier = escape ? 'h' : '';
          }
          return ';__code__ += __modifierMap__["' + modifier + '"](typeof (' + html + ') !== "undefined" ? (' + html + ') : "")\n';
      }
      //原生js
      return ';' + line + '\n';
  }
  function parse(tpl, opt) {
      if (opt === void 0) { opt = defaultOpt; }
      var _a = extendDeep({}, defaultOpt, opt), sTag = _a.sTag, eTag = _a.eTag, escape = _a.escape;
      tpl = String(tpl);
      var code = '';
      var tokens = tpl.split(sTag);
      for (var i = 0, len = tokens.length; i < len; i++) {
          var token = tokens[i].split(eTag);
          if (token.length === 1) {
              // html
              // <div></div>
              code += parsehtml(token[0]);
          }
          else {
              // js
              // <%= a%>
              code += parsejs(token[0], escape);
              if (token[1]) {
                  // js + html
                  // <%if () {%> html <%}%>
                  code += parsehtml(token[1]);
              }
          }
      }
      return code;
  }

  /*!
   * @templatejs/runtime 2.3.0 (https://github.com/yanhaijing/runtime)
   * API https://github.com/yanhaijing/runtime/blob/master/doc/api.md
   * Copyright 2017-2019 yanhaijing. All Rights Reserved
   * Licensed under MIT (https://github.com/yanhaijing/runtime/blob/master/LICENSE)
   */

  var o = {
      sTag: '<%',
      eTag: '%>',
      compress: false,
      escape: true,
      error: function () { } //错误回调
  };
  function clone() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
      }
      return extend.apply(null, [{}].concat(args));
  }
  function nothing(param) {
      return param;
  }
  function encodeHTML(source) {
      return String(source)
          .replace(/&/g, '&amp;')
          .replace(/</g, '&lt;')
          .replace(/>/g, '&gt;')
          .replace(/\\/g, '&#92;')
          .replace(/"/g, '&quot;')
          .replace(/'/g, '&#39;');
  }
  var functionMap = {}; //内部函数对象
  //修饰器前缀
  var modifierMap = {
      '': function (param) { return nothing(param); },
      'h': function (param) { return encodeHTML(param); },
      'u': function (param) { return encodeURI(param); }
  };
  function consoleAdapter(cmd, msg) {
      typeof console !== 'undefined' && console[cmd] && console[cmd](msg);
  }
  function runtime() { }
  runtime.config = function (option) {
      if (type(option) === 'object') {
          o = extend(o, option);
      }
      return clone(o);
  };
  runtime.compress = function (html) {
      return String(html).replace(/\s+/g, ' ').replace(/<!--[\w\W]*?-->/g, '');
  };
  runtime.handelError = function handelError(e) {
      var message = 'template.js error\n\n';
      for (var key in e) {
          message += '<' + key + '>\n' + e[key] + '\n\n';
      }
      message += '<message>\n' + e.message + '\n\n';
      consoleAdapter('error', message);
      o.error(e);
      function error() {
          return 'template.js error';
      }
      error.toString = function () {
          return '__code__ = "template.js error"';
      };
      return error;
  };
  runtime.registerFunction = function (name, fn) {
      if (typeof name !== 'string') {
          return clone(functionMap);
      }
      if (type(fn) !== 'function') {
          return functionMap[name];
      }
      return functionMap[name] = fn;
  };
  runtime.unregisterFunction = function (name) {
      if (typeof name !== 'string') {
          return false;
      }
      delete functionMap[name];
      return true;
  };
  runtime.registerModifier = function (name, fn) {
      if (typeof name !== 'string') {
          return clone(modifierMap);
      }
      if (type(fn) !== 'function') {
          return modifierMap[name];
      }
      return modifierMap[name] = fn;
  };
  runtime.unregisterModifier = function (name) {
      if (typeof name !== 'string') {
          return false;
      }
      delete modifierMap[name];
      return true;
  };
  runtime.encodeHTML = encodeHTML;
  runtime.functionMap = functionMap;
  runtime.modifierMap = modifierMap;
  runtime.o = o;

  var encodeHTML$1 = runtime.encodeHTML, compress = runtime.compress, handelError = runtime.handelError, o$1 = runtime.o, functionMap$1 = runtime.functionMap, modifierMap$1 = runtime.modifierMap;
  function clone$1() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
      }
      return extend.apply(null, [{}].concat(args));
  }
  function compiler(tpl, opt) {
      if (opt === void 0) { opt = o$1; }
      var mainCode = parse(tpl, opt);
      var headerCode = '\n' +
          '    var html = (function (__data__, __modifierMap__) {\n' +
          '        var __str__ = "", __code__ = "";\n' +
          '        for(var key in __data__) {\n' +
          '            __str__+=("var " + key + "=__data__[\'" + key + "\'];");\n' +
          '        }\n' +
          '        eval(__str__);\n\n';
      var footerCode = '\n' +
          '        ;return __code__;\n' +
          '    }(__data__, __modifierMap__));\n' +
          '    return html;\n';
      var code = headerCode + mainCode + footerCode;
      code = code.replace(/[\r]/g, ' '); // ie 7 8 会报错,不知道为什么
      try {
          var Render = new Function('__data__', '__modifierMap__', code);
          Render.toString = function () {
              return mainCode;
          };
          return Render;
      }
      catch (e) {
          e.temp = 'function anonymous(__data__, __modifierMap__) {' + code + '}';
          throw e;
      }
  }
  function compile(tpl, opt) {
      if (opt === void 0) { opt = o$1; }
      opt = clone$1(o$1, opt);
      try {
          var Render = compiler(tpl, opt);
      }
      catch (e) {
          e.name = 'CompileError';
          e.tpl = tpl;
          e.render = e.temp;
          delete e.temp;
          return handelError(e);
      }
      function render(data) {
          data = clone$1(functionMap$1, data);
          try {
              var html = Render(data, modifierMap$1);
              html = opt.compress ? compress(html) : html;
              return html;
          }
          catch (e) {
              e.name = 'RenderError';
              e.tpl = tpl;
              e.render = Render.toString();
              return handelError(e)();
          }
      }
      render.toString = function () {
          return Render.toString();
      };
      return render;
  }
  function template(tpl, data) {
      if (typeof tpl !== 'string') {
          return '';
      }
      var fn = compile(tpl);
      if (type(data) !== 'object') {
          return fn;
      }
      return fn(data);
  }
  template.config = function (option) {
      return runtime.config(option);
  };
  template.registerFunction = function (name, fn) {
      return runtime.registerFunction(name, fn);
  };
  template.unregisterFunction = function (name) {
      return runtime.unregisterFunction(name);
  };
  template.registerModifier = function (name, fn) {
      return runtime.registerModifier(name, fn);
  };
  template.unregisterModifier = function (name) {
      return runtime.unregisterModifier(name);
  };
  // 兼容runtime, 预编译插件可以引用runtime,也可以引用template
  template.encodeHTML = encodeHTML$1;
  template.compress = compress;
  template.handelError = handelError;
  template.functionMap = functionMap$1;
  template.modifierMap = modifierMap$1;
  // 兼容旧版本
  template.__encodeHTML = encodeHTML$1;
  template.__compress = compress;
  template.__handelError = handelError;
  template.__compile = compile;

  return template;

})));

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body{
      width: 100%;
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    .container{
      width: 100%;
    }
    #content{
      width: 100%;
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      padding: 10px;
      box-sizing: border-box;
      align-items: center;
    }
    .name-box{
      position: relative;
      width: 21%;
      margin-top: 5%;
      text-align: center;
      line-height: 60px;
      font-size: 30rpx;
      height: 60px;
      font-weight: bold;
      background-color: #acd0e4;
      margin: 2%;
      box-sizing: border-box;
      color: #fff;
    }
    .sort{
      width: 150px;
      height: 50px;
      text-align: center;
      line-height: 50px;
      background-color: #4b5692;
      margin: auto;
      margin-top: 15px;
      color: #fff;
    }
    .sort-content{
      width: 100%;
      display: flex;
      justify-content: space-around;
      margin-top: 25px;
      color: #fff;
    }
    #sort-left,#sort-right{
      width:100px;
      text-align: center;
    }
    .left-box,.right-box{
      width: 100px;
      height: 50px;
      background-color: #e4adc6;
      margin-bottom: 10px;
      line-height: 50px;
    }
  </style>
</head>
<body>
  <div class="container">
    <div id="content"></div>
    <div class="sort" id="sort">分组</div>
    <div class="sort-content">
      <div id="sort-left"></div>
      <div id="sort-right"></div>
    </div>
  </div> 
  <script id="data-content" type="text/html">
      {{each data item index}}
    <div class="name-box">{{item.name}}</div>
    {{/each}}
  </script>
  <script id="left-content" type="text/html">
    {{each data item index}}
  <div class="left-box">{{item.name}}</div>
  {{/each}}
</script>
<script id="right-content" type="text/html">
  {{each data item index}}
<div class="right-box">{{item.name}}</div>
{{/each}}
</script>
  <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
  <script type="text/javascript" src="./template.js"></script>
  <script type="text/javascript" src="./template-web.js"></script>
  <script>
    var listall=[
    {name:'栾云平'},{name:'高峰'},{name:'秦宵贤'},{name:'尚九熙'},{name:'张鹤伦'},{name:'周九良'},{name:'孟鹤堂'},
        {name:'张云雷'},{name:'杨九郎'},{name:'李九春'}
        ];
        var html = template('data-content', {data:listall});
        document.getElementById('content').innerHTML = html;
        var sort = document.getElementById('sort')
        sort.addEventListener('click',function(){
          var listall=[
        {name:'栾云平'},{name:'高峰'},{name:'秦宵贤'},{name:'尚九熙'},{name:'张鹤伦'},{name:'周九良'},{name:'孟鹤堂'},
        {name:'张云雷'},{name:'杨九郎'},{name:'李九春'}
        ];
          console.log('listall',listall)
          var morelist=changelist(listall,2);
          var listLeft = morelist[0]
          var listright = morelist[1]
          console.log(listLeft,listright)
          var html1 = template('left-content', {data:listLeft});
          document.getElementById('sort-left').innerHTML = html1;
          var html2 = template('right-content', {data:listright});
          document.getElementById('sort-right').innerHTML = html2;
        })
    /*
    *
    * 解决数组中对象随机分组问题
    * list:要分组的数组
    * num:分成的组数
    * */
    function changelist(list,num) {
      console.log(list,num)
        var n=list.length-1;//获取数组下标的上限
        var length=n/num;//获取分组后单组的长度
        var list1=list,list2=[];
        console.log(n,length)
        for(var i=0;i<num;i++){//根据分组数,确定遍历次数
            var newlist=[];
            for(var j=0;j<length;j++){
                var id=Math.ceil(Math.random(0,list1.length-1)*list1.length-1);//获取下标范围内的随机数
                newlist.push(list1[id]);//将获取的对象放入定义的变量数组中
                list1.splice(id,1);//从数组中清除当前项
            }
            list2.push(newlist);//将变量数组放入结果组数中
            console.log(list2)
        }
        return list2;
    }
    
  </script>
</body>

</html>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值