这个问题是昨天百度一面的问题,想法倒是有,但是代码写出来就有些费劲,其实当场觉得这个代码应该很好写(毕竟思想是有的),但是今天尝试了一下去写代码,还是有一点点的问题,下面分享一下解决这个问题的两个代码片段

1、硬写法(哈哈哈)

var url = '//www.jb51.net:80/seo/?'; 
		var data = { //一个json数据
			'a':1,
			'b':2,
			'c':3
		};
		var arr = JSON.stringify(data); //将json数据转换为字符串格式
		var len = arr.length; //获取字符串长度
		var data1 = arr.substring(1,len-1); //截取字符串中不包括‘{}’部分
		var data2 = data1.split(','); //以','分割字符串
		var jsonArr = []; //创建一个新数组
		for(var i=0;i<data2.length;i++){
			str2 = data2[i].replace(/\"/g, ""); //去掉data2数据中每一项的""
			var str3 = str2.replace(/:/,'='); //将str2数据中的每一项中':'替换为'='
			jsonArr.push(str3); //将str3数据存入数组里面
		}		
		var result = url+jsonArr.join('&'); //将两个数据拼接起来
		console.log(result); 

2、函数法(这个法起名就比较正经)

function addURLParam(url,name,value){ //3个参数,要添加参数的url,参数的名称,参数的值
			url += (url.indexOf("?")==-1?"?":"&"); //判断url中是否有'?'
			url += encodeURIComponent(name)+"="+encodeURIComponent(value); //拼接
			return url; 
		}
		var url = "example.php"; 
		url = addURLParam(url,"name1","1"); //传参
		url = addURLParam(url,"name2","2"); //传参
 		console.log(url);

3、函数法--只添加一次(来吧,继续正经的起名)

function addURLParam(url,name,value){ //3个参数,要添加参数的url,参数的名称,参数的值
			url += (url.indexOf("?")==-1?"?":"&"); //判断url中是否有'?'
			url += encodeURIComponent(name)+"="+encodeURIComponent(value); //拼接
			return url; 
		}
		var url = "example.php"; 
		var json = {
			'name':111,
			'value':222,
			'key':333
		};
		for(var key in json){  
			url = addURLParam(url,key,json[key]); //传参
		}  
 	    console.log(url);

写一个百度面试小结吧,在这之前我一直觉得我只要有思想就够了,代码什么的就会自然而然的写出来,然而不是这样的,必须有思维方式然后再经过数不清的实战次数才可以吧,也很可惜没能听到更多的面试题,在很简单的问题上却因为代码“栽了跟头”,继续努力吧

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐