JS将数据保存在本地

JS将数据保存在本地

  • 写在前面
    • 问题描述
    • 遇到的问题

写在前面

这是我的第一篇博客,想有一个博客已经很久了。之前一直都是拿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写文件操作函数。

遇到不会的问题,当然是问度娘,搜索结果如下:

JS将数据保存在本地_第1张图片
行吧,没有搜到,这就有点小难受。

随后问了开发时遇到的几位大神,大神二话没说,甩过来一段代码,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对象的锅。但是暂时还未想到解决办法,如果有大神有很好的解决办法,欢迎留言,万分感谢。

你可能感兴趣的:(JS)