这是我的第一篇博客,想有一个博客已经很久了。之前一直都是拿Microsoft的OneNote来做笔记,原因是因为OneNote可以实时同步,数据保存方面,OneNote做的的确让我很喜欢。而且多平台自动同步对于我这种记性不好的人可谓是救星。忘记一个知识点了随时随地拿起手机打开OneNote就可以查看,多好。
尽管OneNote很方便,但是还是想要一个博客,毕竟听说如果有一个博客的话,以后找工作面试可是很加分的。是的,低俗的我,开始了我的第一篇博客。之前在开发的时候,接触到过很多平台,像什么简书,博客园,CSDN等等。最终还是选在了CSDN,毕竟个人感觉还是比较官方一点哈。
废话不多说,开始第一篇博客。
今天在处理数据的时候,突然想把一个对象数组中每个对象的某个属性给提取出来,并新加一个属性,最后添加到一个的数组。具体表现形式如下:
// 修改前(Before the change)
{
Android: [{
tit: '',
desc: '',
date: '',
cover_src: '',
url: ''
},{...},{...}...
],
...
}
// 修改前(Before the change)
{
Android: [{
tit: '',
keywords: ''
},{...},{...}..
],
...
}
最后将生成的数据保存在一个txt文本文档里。当然修改数据不是难点,但是在生成文本文档的时候突然不知所措。前些天学python的时候用python写过文件操作函数,大一大二学C语言和C++时候也有使用过文件操作函数。但是从事前端开发大半年,貌似没有接触过用js写文件操作函数。
遇到不会的问题,当然是问度娘,搜索结果如下:
随后问了开发时遇到的几位大神,大神二话没说,甩过来一段代码,emmm,优秀!
// 生成指定后缀文件函数
function downloadFile(data, name) { // data: 要保存的数据; name: 文件后缀名
// 创建一个a标签
var ele_a = document.createElement("a");
// 定义生成文件的文件名及后缀名
var fileName = "data." + name;
ele_a.download = fileName;
// 隐藏a标签
ele_a.style.display = 'none';
// 生成一个blob二进制数据,内容为json数据
var blob = new Blob([JSON.stringify(data)]);
// 生成一个指向blob的URL地址,并赋值给a标签的href属性
ele_a.href = URL.createObjectURL(blob);
// Dom文档Body里生成一个a标签
document.body.appendChild(ele_a);
// 模拟点击a标签
ele_a.click();
// 移去a标签
document.body.removeChild(ele_a);
}
// 测试函数调用
// 定义数据
var obj = {
tit: '',
desc: '',
date: '',
cover_src: '',
url: ''
};
// 调用函数
downloadFile(obj, "txt");
结果如下:
// data.txt
{
"tit": "",
"desc": "",
"date": "",
"cover_src": "",
"url": ""
}
按道理,已经保存到本地了就算结束了。但是发现一个问题,生成的数据为JSON字符串格式,跟我原本想要的js对象格式并不一致。
观察了一下代码,初步猜测应该是js的blob对象的锅。但是暂时还未想到解决办法,如果有大神有很好的解决办法,欢迎留言,万分感谢。