javascript - 二维数组去重问题,怎么做?[[a,1],[b,2],[a,2]] 去除[a,2]

查看:120
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆