javascript - 二维数组去重问题,怎么做?[[a,1],[b,2],[a,2]] 去除[a,2]
本文介绍了javascript - 二维数组去重问题,怎么做?[[a,1],[b,2],[a,2]] 去除[a,2]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
要求是这样子的,输入一串url 和一个待去除参数,输出筛选后的结果,第二个参数缺省的话,去除重复部分。
stripUrlParams('www.codewars.com?a=1&b=2&a=2', ['b']) // returns 'www.codewars.com?a=1'
我的思路是先将querry参数变成二维数组再去重,去重这步遇到了问题,求助!或者针对这个要求有木有更好地解决方法也行
[[a,1],[b,2],[a,2]] 去除[a,2],剩下[[a,1],[b,2]]该如何写?只保留第一次出现的
解决方案
思路:对象的键值是唯一的,将参数转化为数组后,遍历数组,若在对象中已经存在参数名称则跳过;否则添加参数与值;然后遍历对象组合URL。代码如下:
function stripUrlParams(url, arr) {
var domain = url.substr(0, url.lastIndexOf('?')+1);
if(url.lastIndexOf('?') == -1)
domian = url;
var query = url.substr(url.lastIndexOf('?')+1);
var obj = {};
var argsArr = query.split('&');
for(var i in argsArr) {
var tmp = argsArr[i].split('=');
if(obj[tmp[0]] == null)
obj[tmp[0]]=tmp[1];
}
query = "";
for(var i in obj) {
// 去掉arr中的参数
var is = true;
if(arr != null)
for(var j in arr) {
if(i == j)
is = false;
}
if(is) {
query += i + "=" + obj[i]+"&";
}
}
return domain + query.substr(0, query.length-1);
}
var url = stripUrlParams('www.codewars.com?a=1&b=2&a=2', ['b'])
console.log(url);
这篇关于javascript - 二维数组去重问题,怎么做?[[a,1],[b,2],[a,2]] 去除[a,2]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文