GVKun编程网logo

原生JavaScript实现json数据转Excel以及对照片URL数组进行统一打包zip集中下载功能

16

如果您对原生JavaScript实现json数据转Excel以及对照片URL数组进行统一打包zip集中下载功能感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解原生JavaScript实现json

如果您对原生JavaScript实现json数据转Excel以及对照片URL数组进行统一打包zip集中下载功能感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解原生JavaScript实现json数据转Excel以及对照片URL数组进行统一打包zip集中下载功能的各种细节,此外还有关于JavaScript javaScript中的Date 以及对原生javaScript的扩展、javascript – 将json数据转换为数组、JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解、JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解_javascript技巧的实用技巧。

本文目录一览:

原生JavaScript实现json数据转Excel以及对照片URL数组进行统一打包zip集中下载功能

原生JavaScript实现json数据转Excel以及对照片URL数组进行统一打包zip集中下载功能

这两天遇到一个问题,即前端能获取到一个json对象,需求是通过点击按钮即可保存Excel表格和照片,即提取特定的数据加上title导出为Excel格式的文档保存到本地以及再把特定照片链接数据提取出来丢进一个数组,然后再编写函数对其逐一循环统一放进一个文件里打包成zip下载,之前找了好多方法但是由于js是依托于浏览器等原因都只能是单张处理。最后实在无赖就请教了一些师姐,她人挺好立马找来了demo(见片尾师姐版解决方案),好了话不多说上代码: 其包括多张处理与统一处理打包成zip处理并提供自定义命名+后缀处理。

上图:

HTML核心部分(外部文件可自行处理按需删除):

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
	<head>
		<meta charset="utf-8" />
		<title>详情页</title>
		<script src="./js/jquery.min.js"></script>
		<link rel="stylesheet" type="text/css" href="./css/detail.css">
		<script type="text/javascript" src="./js/detail2.js"></script>
		<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
		<script src="https://cdn.bootcss.com/bootstrap-table/1.15.4/bootstrap-table.js"></script>
		<script src="https://cuikangjie.github.io/JsonExportExcel/dist/JsonExportExcel.min.js"></script>
		<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!--		<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js"></script>-->
		<script src="https://cdn.bootcss.com/jszip/3.2.2/jszip.min.js"></script>
		<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js"></script>
		<link rel="stylesheet" href="css/detail.css">


	</head>
	<body><!--  -->
	<div>
		<buttononclick="downloadExcel()"  >导出表格</button><span id="downloadExcel"></span><!-- -->
		<buttononclick="downloadPhoto()" >导出照片</button><span id="downloadPhoto"></span><!--  -->
	</div>

	</body>
</html>

CSS:


.downloads{
	float: right;
	position: relative;
	weight: 650px;
	height: 50px;
	background-color: white;
	border-radius: 10px;
	text-align: center;
	left: 0px;
	right: 100px;
	border: 0px solid #4396fe;
	top: 0;

}
.downloadE{
	position:relative;
	width: 80px;
	height: 30px;
	right:5px;
	top:10px;
	background-color: white;
	color: #2f81ff;
	border-radius: 5px;
	text-align: center;
	border: 1.8px solid #4396fe;
	mso-margin-bottom-alt: auto;



}
.downloadP{
	position:relative;
	width: 80px;
	height: 30px;
	left: 0px;
	right: 110px;
	top:10px;
	background-color: white;
	color: #2f81ff;
	border-radius: 5px;
	text-align: center;
	border: 1.8px solid #4396fe;
	mso-margin-bottom-alt: auto;

}

JavaScript:

var globalUrl = "http://**.***.2**.**:端口/admin"
var datas = [];
function downloadExcel() {
	// alert("download!")
	var names = [];
	var jsonData = [];
	var suffix = [];
	$(function() {
		$.ajax({
			type: "get",
			url: globalUrl + "/getAll",
			success: function(data) {
				datas=data;
				var strs="";
					// console.log("888")
					// alert("正在生成,请稍等...")
				$("table").append(strs);
				for(let i=0;i<data.length;i++) {
					var obj = {
						id: data[i].id,
						cementPlant: data[i].cementPlant,//所在公司
						affiliatedCompanyDistributor: data[i].affiliatedCompanyDistributor,//所属公司/经销商
						licensePlateNumber: data[i].licensePlateNumber,//牌号
						vehicleOwner: data[i].vehicleOwner,//驾驶员
						cellPhoneNumber: data[i].cementPlant,//手机号码
						idNumber: data[i].idNumber,//身份证号码
						vehicleType: data[i].vehicleType,//型号
						loads: data[i].loads,//载重
						axleNumber: data[i].axleNumber,//轴数
						installationTime: data[i].installationTime,//时间
					};
					names.push(data[i].photoFileUrl.slice(37, 46));//.replace("/","-")
					var tmp=data[i].photoFileUrl.substring(data[i].photoFileUrl.length-3);
					suffix.push("."+tmp);
					jsonData.push(obj);//http://60.205.218.96:8083/uploadFile/2020/2/12
				}
				// alert(JSON.stringify(jsonData));
				// //列标题,逗号隔开,每一个逗号就是隔开一个单元格
				var str = "id编号,公司,经销商,牌号,驾驶员,手机号码,身份证号码,型号,载重,轴数,时间\n";
				//增加\t为了不让表格显示科学计数法或者其他格式
				for(let i = 0 ; i < jsonData.length ; i++ ){
					for(let item in jsonData[i]){
						str+=`${jsonData[i][item] + ''\t''},`;
					}
					str+=''\n'';
				}
				//encodeURIComponent解决中文乱码
				let uri = ''data:text/csv;charset=utf-8,\ufeff'' + encodeURIComponent(str);
				//通过创建a标签实现
				var link = document.createElement("a");
				link.href = uri;
				//对下载的文件命名
				link.download =  "jsonExcel.xls";
				document.body.appendChild(link);
				link.click();

			},
			error: function(data) {
				alert("数据下载失败!")
			}

		});
	})
}

	function downloadPhoto(){
	// photoFileUrl
		var names = [];
		var jsonData = [];
		var suffixs = [];
		var photoLink = [];
		$.ajax({
			type: "get",
			url: globalUrl + "/getAll",
			success: function(data) {
				var strs="";
				var arrays = [];
				// console.log("888")
				// alert("正在生成......!")
				// alert(JSON.stringify(data));
				$("table").append(strs);
				for(let i=0;i<data.length;i++) {
					var obj = {
						id: data[i].id,
						cementPlant: data[i].cementPlant,//公司
						affiliatedCompanyDistributor: data[i].affiliatedCompanyDistributor,//经销商
						licensePlateNumber: data[i].licensePlateNumber,//牌号
						vehicleOwner: data[i].vehicleOwner,//驾驶员
						cellPhoneNumber: data[i].cementPlant,//手机号码
						idNumber: data[i].idNumber,//身份证号码
						vehicleType: data[i].vehicleType,//车型
						loads: data[i].loads,//载重
						axleNumber: data[i].axleNumber,//轴数
						installationTime: data[i].installationTime,//时间
					};
					names.push(data[i].photoFileUrl.slice(37, 46)+"_"+data[i].id);//.replace("/","-")
					var tmp=data[i].photoFileUrl.substring(data[i].photoFileUrl.length-3);
					suffixs.push("."+tmp);
					jsonData.push(obj);//http://60.205.218.96:8083/uploadFile/2020/2/12
					photoLink.push(data[i].photoFileUrl);
				}
				// alert(JSON.stringify(jsonData));
				// alert(names);
				// alert(suffixs);
				alert(photoLink);

				function packageImages(){
					$(''#downloadPhoto'').text(''处理中...'');
					var imgs = photoLink;//$(''img'');
					// alert(JSON.stringify(imgs));
					var imgsSrc = [];
					var imgBase64 = [];
					var imageSuffix = [];//图片后缀
					var zip = new JSZip();
					zip.file("readme.txt", "照片以''日期''命名_ID\n");
					var img = zip.folder("images");

					for(var i=0;i<photoLink.length;i++){
						var src = imgs[i];//getAttribute("src");
						var suffix = src.substring(src.lastIndexOf("."));
						imageSuffix.push(suffix);

						getBase64(imgs[i])//.getAttribute("src")
							.then(function(base64){
								console.log(base64)
								imgBase64.push(base64.substring(22));
							},function(err){
								console.log(err);//打印异常信息
							});
					}

					function tt(){
						setTimeout(function(){
							if(imgs.length == imgBase64.length){
								for(var i=0;i<imgs.length;i++){
									img.file(names[i]+imageSuffix[i], imgBase64[i], {base64: true});//放入base64即可
									console.log(imgBase64[i]);
								}
								zip.generateAsync({type:"blob"}).then(function(content) {
									saveAs(content, "photos.zip");
								});
								$(''#status'').text(''处理完成。。。。。'');
							}else{
								$(''#status'').text(''已完成:''+imgBase64.length+''/''+imgs.length);
								tt();
							}
						},100);
					}
					tt();
				}
				//传入图片路径,返回base64
				function getBase64(img){
					function getBase64Image(img,width,height) {
						var canvas = document.createElement("canvas");
						canvas.width = width ? width : img.width;
						canvas.height = height ? height : img.height;
						var ctx = canvas.getContext("2d");
						ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
						var dataURL = canvas.toDataURL();
						return dataURL;
					}
					var image = new Image();
					image.crossOrigin = ''Anonymous'';
					image.src = img;
					var deferred=$.Deferred();
					if(img){
						image.onload =function (){
							deferred.resolve(getBase64Image(image));
						}
						return deferred.promise();
					}
				}
				packageImages();
			},
			error: function(data) {
				alert("数据下载失败!")
			}
		});

	}

师姐版解决方案(照片下载):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			img{
				width: 200px;
				height: 150px;
			}
		</style>
	</head>
	<body>

		<!-- 注意图片的路径和项目域名必须不能存在跨域情况
		例如:项目部署在 域名为 www.baidu.com/index.html
		那么图片路径应改为 www.baidu.com/img/2.png -->
		<!-- 链接可来自网络其他URL -->
		<img src="http://60.205.218.96:8089/uploadFile/2020-2-19/331.jpg" />
		<img src="http://60.205.218.96:8089/uploadFile/2020-2-19/337.jpg" />
		
		<br /><br />
		<button onclick="packageImages()">packageImages</button><span id="status"></span><br /><br />
		
		<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
		<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js"></script>
		<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js"></script>
		<script type="text/javascript">
		function packageImages(){
			$(''#status'').text("处理中。。。。。");
			
			var imgs = $(''img'');
			alert(JSON.stringify(imgs));
			var imgsSrc = [];
			var imgBase64 = [];
			var imageSuffix = [];//图片后缀
			var zip = new JSZip();
		    zip.file("readme.txt", "案件详情资料\n");
		    var img = zip.folder("images");
		    
			for(var i=0;i<imgs.length;i++){
				var src = imgs[i].getAttribute("src");
				var suffix = src.substring(src.lastIndexOf("."));
				imageSuffix.push(suffix);
				
				 getBase64(imgs[i].getAttribute("src"))
		            .then(function(base64){
		            	console.log(base64)
		            	imgBase64.push(base64.substring(22));
		            	 
		            },function(err){
		                  console.log(err);//打印异常信息
		            }); 
		           
			}
			function tt(){
				setTimeout(function(){
					if(imgs.length == imgBase64.length){
						for(var i=0;i<imgs.length;i++){
							img.file(i+imageSuffix[i], imgBase64[i], {base64: true});//放入base64即可
							console.log(imgBase64[i]);
						}
						zip.generateAsync({type:"blob"}).then(function(content) {
					        saveAs(content, "images.zip");
					    });
					    $(''#status'').text(''处理完成。。。。。'');
					    
					}else{
						$(''#status'').text(''已完成:''+imgBase64.length+''/''+imgs.length);
						tt();
					}
				},100);
			}
			tt();
		}
 
    //传入图片路径,返回base64
    function getBase64(img){
        function getBase64Image(img,width,height) {
          var canvas = document.createElement("canvas");
          canvas.width = width ? width : img.width;
          canvas.height = height ? height : img.height;
 
          var ctx = canvas.getContext("2d");
          ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
          var dataURL = canvas.toDataURL();
          return dataURL;
        }
        var image = new Image();
        image.crossOrigin = ''Anonymous'';
        image.src = img;
        var deferred=$.Deferred();
        if(img){
          image.onload =function (){
            deferred.resolve(getBase64Image(image));
          }
          return deferred.promise();
        }
      }
    
</script>
	</body>
</html>

/*-------------------反爬虫声明o(*////▽////*)咻咻咻--------------------

作者:杨木发
版权声明:
       本文为博主倾情原创文章,整篇转载请附上源文链接!

如果觉得本文对你有所收获,你的请评论点赞 与

合理优质的转发也将是鼓励支持我继续创作的动力,

 更多精彩可百度搜索 杨木发 或:

个人网站:www.yangmufa.com    ,

开源中国:https://my.oschina.net/yangmufa    ,

Gitee:https://gitee.com/yangmufa    ,

GitHub:https://github.com/yangmufa    。

坚持创作 善于总结 开源共享 高质进步。

-------------------反爬虫声明o(*////▽////*)咻咻咻--------------------*/

JavaScript javaScript中的Date 以及对原生javaScript的扩展

JavaScript javaScript中的Date 以及对原生javaScript的扩展

原生JavaScript中的Date

JS Date 对象用于处理日期和时间。
创建 Date 对象的语法:
var myDate=new Date()
Date 对象会自动把当前日期和时间保存为其初始值。
参数形式有以下5种:  

new Date("month dd,yyyy hh:mm:ss");
new Date("month dd,yyyy");
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);

经测试一下几种也可以:

new Date(yyyy-MM-dd HH:mm:ss);

new Date(yyyy/MM/dd HH:mm:ss);

测试截图:


注意最后一种形式,参数表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:

month:用英文表示月份名称,从January到December

mth:用整数表示月份,从0-11(1月到12月)

dd:表示一个月中的第几天,从1到31

yyyy:四位数表示的年份

hh:小时数,从0(午夜)到23(晚11点)

mm:分钟数,从0到59的整数

ss:秒数,从0到59的整数

ms:毫秒数,为大于等于0的整数

如:

new Date("January 12,2006 22:19:35");

new Date("January 12,2006");

new Date(2006,0,12,22,19,35);

new Date(2006,0,12);

new Date(1137075575000);

 

Date() 返回当日的日期和时间。 
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。



对JavaScript中的Date格式化的扩展

方法一:这个很不错,好像是 csdn 的 Meizz 写的: 

// 对Date的扩展,将 Date 转化为指定格式的String
  • // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
  • // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
  • // 例子:
  • // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
  • // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
  • Date.prototype.Format = function(fmt)
  • { //author: meizz
  • var o = {
  • "M+" : this.getMonth()+1, //月份
  • "d+" : this.getDate(), //日
  • "H+" : this.getHours(), //小时
  • "m+" : this.getMinutes(), //分
  • "s+" : this.getSeconds(), //秒
  • "q+" : Math.floor((this.getMonth()+3)/3), //季度
  • "S" : this.getMilliseconds() //毫秒
  • };
  • if(/(y+)/.test(fmt))
  • fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  • for(var k in o)
  • if(new RegExp("("+ k +")").test(fmt))
  • fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  • return fmt;
  • };

  • 调用方法:

    [javascript] view plain copy
    1. var time1 = new Date().Format("yyyy-MM-dd HH:mm:ss");     
    2.   
    3. var time2 = new Date().Format("yyyy-MM-dd");    

     



    方法二:

    [javascript]  view plain  copy
    1. <mce:script language="javascript" type="text/javascript"><!--  
    2.         
    3. /**       
    4.  * 对Date的扩展,将 Date 转化为指定格式的String       
    5.  * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符       
    6.  * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)       
    7.  * eg:       
    8.  * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423       
    9.  * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04       
    10.  * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04       
    11.  * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04       
    12.  * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18       
    13.  */          
    14. Date.prototype.pattern=function(fmt) {           
    15.     var o = {           
    16.     "M+" : this.getMonth()+1, //月份           
    17.     "d+" : this.getDate(), //日           
    18.     "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时           
    19.     "H+" : this.getHours(), //小时           
    20.     "m+" : this.getMinutes(), //分           
    21.     "s+" : this.getSeconds(), //秒           
    22.     "q+" : Math.floor((this.getMonth()+3)/3), //季度           
    23.     "S" : this.getMilliseconds() //毫秒           
    24.     };           
    25.     var week = {           
    26.     "0" : "/u65e5",           
    27.     "1" : "/u4e00",           
    28.     "2" : "/u4e8c",           
    29.     "3" : "/u4e09",           
    30.     "4" : "/u56db",           
    31.     "5" : "/u4e94",           
    32.     "6" : "/u516d"          
    33.     };           
    34.     if(/(y+)/.test(fmt)){           
    35.         fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));           
    36.     }           
    37.     if(/(E+)/.test(fmt)){           
    38.         fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "/u661f/u671f" : "/u5468") : "")+week[this.getDay()+""]);           
    39.     }           
    40.     for(var k in o){           
    41.         if(new RegExp("("+ k +")").test(fmt)){           
    42.             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));           
    43.         }           
    44.     }           
    45.     return fmt;           
    46. }         
    47.        
    48. var date = new Date();        
    49. window.alert(date.pattern("yyyy-MM-dd hh:mm:ss"));  
    50. // --></mce:script>      

     


    方法三:

    [javascript]  view plain  copy
    1. Date.prototype.format = function(mask) {        
    2.        
    3.     var d = this;        
    4.        
    5.     var zeroize = function (value, length) {        
    6.        
    7.         if (!length) length = 2;        
    8.        
    9.         value = String(value);        
    10.        
    11.         for (var i = 0, zeros = ''; i < (length - value.length); i++) {        
    12.        
    13.             zeros += '0';        
    14.        
    15.         }        
    16.        
    17.         return zeros + value;        
    18.        
    19.     };          
    20.        
    21.     return mask.replace(/"[^"]*"|'[^']*'|/b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])/1?|[lLZ])/b/g, function($0) {        
    22.        
    23.         switch($0) {        
    24.        
    25.             case 'd':   return d.getDate();        
    26.        
    27.             case 'dd':  return zeroize(d.getDate());        
    28.        
    29.             case 'ddd'return ['Sun','Mon','Tue','Wed','Thr','Fri','Sat'][d.getDay()];        
    30.        
    31.             case 'dddd':    return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][d.getDay()];        
    32.        
    33.             case 'M':   return d.getMonth() + 1;        
    34.        
    35.             case 'MM':  return zeroize(d.getMonth() + 1);        
    36.        
    37.             case 'MMM'return ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()];        
    38.        
    39.             case 'MMMM':    return ['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()];        
    40.        
    41.             case 'yy':  return String(d.getFullYear()).substr(2);        
    42.        
    43.             case 'yyyy':    return d.getFullYear();        
    44.        
    45.             case 'h':   return d.getHours() % 12 || 12;        
    46.        
    47.             case 'hh':  return zeroize(d.getHours() % 12 || 12);        
    48.        
    49.             case 'H':   return d.getHours();        
    50.        
    51.             case 'HH':  return zeroize(d.getHours());        
    52.        
    53.             case 'm':   return d.getMinutes();        
    54.        
    55.             case 'mm':  return zeroize(d.getMinutes());        
    56.        
    57.             case 's':   return d.getSeconds();        
    58.        
    59.             case 'ss':  return zeroize(d.getSeconds());        
    60.        
    61.             case 'l':   return zeroize(d.getMilliseconds(), 3);        
    62.        
    63.             case 'L':   var m = d.getMilliseconds();        
    64.        
    65.                     if (m > 99) m = Math.round(m / 10);        
    66.        
    67.                     return zeroize(m);        
    68.        
    69.             case 'tt':  return d.getHours() < 12 ? 'am' : 'pm';        
    70.        
    71.             case 'TT':  return d.getHours() < 12 ? 'AM' : 'PM';        
    72.        
    73.             case 'Z':   return d.toUTCString().match(/[A-Z]+$/);        
    74.        
    75.             // Return quoted strings with the surrounding quotes removed        
    76.        
    77.             default:    return $0.substr(1, $0.length - 2);        
    78.        
    79.         }        
    80.        
    81.     });        
    82.        
    83. };      

    javascript – 将json数据转换为数组

    javascript – 将json数据转换为数组

    我目前正在使用jquery和javascript来获取json数据,我想将其添加到列表中.
    从它的来源收到的原始数据看起来像这样;

    null({"groups": "Blacksheep,Family,Voice,Technical,Band"})
    

    用一些代码输入我的输入

    Blacksheep,Family,Voice,Technical,Band 
    

    我的代码获取这些值并通过for循环放置它们,为每个条目循环一次.然后它获取该条目的名称并将其放入< li>我的html文档中的字段是< ul>标签名为people.

    for (i=0 ; i < input.length ; i++){
        console.log(input);
        document.getElementById("people").innerHTML += "<li>" + input[i] + "</li>";
    }
    

    我试图把它变成一个数组,但每边都加了'[‘,但显然不是那么容易.此刻它需要json条目并列出每个字母而不是单词.

    有没有办法将每个单词与json分开?或者将其解释为数组?

    解决方法:

    你可以拆分var

    "Blacksheep,Family,Voice,Technical,Band".split(',');
    

    这返回一串数组..

    JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解

    JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解

    zip.js是什么

      zip.js的github项目地址:

      通过zip.js封装一个能在网页端生成zip文件的插件, 直接在网页中创建包含文件夹和文件的压缩包,也可以自定义名字并下载;

      如何使用:

      1:引用zip.js

      2:引用jQuery;

      3:并引用封装的ZipArchive.js,(因为zip.js的api使用起来比较繁琐,所以自己封装实现了这个插件)

      4:引用mime-types.js;

      查看DEMO,使用方式为:

    运行下面代码

    rush:js;"> Meta charset="UTF-8">

      DEMO在后面:文件下载下来, 文件夹的格式如下:

      

    回到顶部

      创建压缩文件和文件夹的详细源代码: 运行下面代码

    rush:js;"> Meta charset="UTF-8">

    JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解_javascript技巧

    JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解_javascript技巧

    zip.js是什么

      zip.js的github项目地址:http://gildas-lormeau.github.io/zip.js/

      通过zip.js封装一个能在网页端生成zip文件的插件, 直接在网页中创建包含文件夹和文件的压缩包,也可以自定义名字并下载;

      如何使用:

      1:引用zip.js

      2:引用jQuery;

    立即学习“Java免费学习笔记(深入)”;

    点击下载“嗨格式压缩大师”;

      3:并引用封装的ZipArchive.js ,(因为zip.js的api使用起来比较繁琐,所以自己封装实现了这个插件)

      4:引用mime-types.js;

      查看DEMO, 使用方式为:

    运行下面代码

    <!DOCTYPE html>
    <html>
    <head lang="en">
      <meta charset="UTF-8">
      <title></title>
      <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script>
      <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script>
      <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script>
      <script src="http://files.cnblogs.com/files/diligenceday/ZipArchive.js"></script>
    </head>
    <body>
    
    <script>
      var z = new ZipArchive;
      z.addFile("a/a.txt", "aaaaaaacontent");
      z.addFile("aaaa.txt", "aaaaaaaccccc");
      z.export("nono");
    </script>
    </body>
    </html>
    
    
    登录后复制

      DEMO在后面:文件下载下来, 文件夹的格式如下:

      

    回到顶部

      创建压缩文件和文件夹的详细源代码:
    运行下面代码

    <!DOCTYPE html>
    <html>
    <head lang="en">
      <meta charset="UTF-8">
      <title></title>
      <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script>
      <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script>
      <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script>
      <style>
        code{
          display: block;
          padding: 10px;
          background: #eee;
        }
      </style>
    </head>
    <body>
      <div>
        <h1>
          兼容性
        </h1>
        <div>
          <p>
            zip.js可以在所有的chrome浏览器和firefox浏览器中运行, 可以在safari6和IE10,以及IE10以上运行;
          </p>
          <p>
            如果要在IE9和safari中运行需要两个设置:
          </p>
          
            1:zip.useWebWorkers == false
          
          
            2:并引用这个JS:https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b/js/typedarray.js
          
        </div>
      </div>
    <script>
      zip.workerScriptsPath = "http://gildas-lormeau.github.io/zip.js/demos/";
      /**
       * @desc 压缩文件;
       * @event onprogress, onend, onerror;
       * */
      var ZipArchive = function() {
        function noop() {};
        this.name = "未命名文件";
        this.zippedBlob = {};
        var _this = this;
        this.length = 0;
        this.onend = noop;
        this.onerror = noop;
        this.onprogress = noop;
        //创建一个延迟对象;
        var def = this.defer = new $.Deferred();
        zip.createWriter( new zip.BlobWriter("application/zip"), function(zipWriter) {
          _this.zipWriter = zipWriter;
          //继续执行队列;
          def.resolve();
        }, this.error );
      };
    
      ZipArchive.blob = function (filename, content) {
        return new Blob([ content ], {
          type : zip.getMimeType(filename)
        });
      };
    
      $.extend( ZipArchive.prototype, {
        /**
         * @desc 添加文件
         * @param String filename为文件的名字;
         * @param String content;
         * @param Object options 传参
         *   例如:{ level : 0} 压缩的等级,0 到 9;
         *   例如:{ comment : "提示文字" }
         *   例如:{ lastModDate : "最后编辑时间" }
         * */
        "addFile" : function ( filename , content, options) {
          var _this = this;
          blob = ZipArchive.blob(filename, content);
          //为了产生链式的效果, 必须把deferrer赋值给新的defer
          this.defer = this.defer.then(function() {
            var def = $.Deferred();
    
            _this.zipWriter.add(filename, new zip.BlobReader(blob)
                ,function() { // reader
                  console.log("addFile success!!");
                  def.resolve();
                  //zipWriter.close(callback);
                }, function (size, total) { //onend
                  _this.onend(filename, blob, total);
                  _this.length += total;
                }, function () { //onprogress
                  _this.onprogress(filename, blob, total);
                },options || {
                  //options
                });
    
            return def;
          });
        },
    
        /**
         * @desc 添加文件夹, 我发现这个文件无法创建;
         * @desc 创建文件夹功能不好用, 需要创建文件夹你通过 zipWriter.addFile("directory/filename.txt", blob())创建文件夹和对应文件;;
         * */
        "_addFolder" : function (foldername , options) {
          //创建文件夹功能目前不能用;
          //创建文件夹功能不好用, 直接通过 zipWriter.addFile("directory/filename.txt", blob())创建文件夹和文件
          return this;
        },
    
        "size" : function () {
          return this.length;
        },
    
        /**
         * @desc 获取blob文件
         * */
        "get" : function () {
          return this.zippedBlob;
        },
    
        /**
         * @desc 导出为zip文件
         * */
        "export" : function ( name ) {
          name = name || this.name;
          var _this = this;
          this.defer.then(function() {
            _this.zipWriter.close(function( zippedBlob ) {
              if( typeof name === "string" || typeof name === "number") {
                var downloadButton = document.createElement("a"),
                    URL = window.webkitURL || window.mozURL || window.URL;
                downloadButton.href = URL.createObjectURL( zippedBlob );
                downloadButton.download = name + ".zip";
                downloadButton.click();
              }else{
                name( zippedBlob );
              };
            });
          });
        },
    
        "error" : function() {
          this.onerror( this );
          throw new Error("压缩文件创建失败");
        }
      });
    
    </script>
    <script>
      var z = new ZipArchive;
      z.addFile("a/a.txt", "aaaaaaacontent");
      z.addFile("aaaa.txt", "aaaaaaaccccc");
      z.export("nono");
    </script>
    </body>
    </html>
    
    登录后复制

    关于原生JavaScript实现json数据转Excel以及对照片URL数组进行统一打包zip集中下载功能的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于JavaScript javaScript中的Date 以及对原生javaScript的扩展、javascript – 将json数据转换为数组、JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解、JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解_javascript技巧的相关信息,请在本站寻找。

    本文标签: