Javascript 合并字符串中的重复项并用逗号追加值

Javascript 合并字符串中的重复项并用逗号追加值,javascript,Javascript,我应该有一串 let check = 'test_name=sdf&test_name=dfgdfg&test_last_name=dfg'; 在js中有没有一种方法可以合并重复项,然后用逗号附加它的值 输出应该是 test_name=sdf,dfgdfg&test_last_name=dfg; 你知道我该怎么做吗 这就是我迄今为止所尝试的 这是简化的版本 test2: function() { let test2 = ['val1','val2','

我应该有一串

let check = 'test_name=sdf&test_name=dfgdfg&test_last_name=dfg';
在js中有没有一种方法可以合并重复项,然后用逗号附加它的值

输出应该是

test_name=sdf,dfgdfg&test_last_name=dfg;
你知道我该怎么做吗

这就是我迄今为止所尝试的

这是简化的版本

test2: function() {
        let test2 = ['val1','val2','val3'];
        let test3 = ['opt1','opt1','opt3'];


        let filter = '';
        for (let i = 0; i < test2.length; i++) {

            let text = test2[i]; // input value
            let val =test3[i]; // option value

            filter += val + '=' + text;

            if (filter.includes(val) === true) {
                filter += ',' + text;
            }

            i !== test2.length-1 ? filter += '&' : '';

        }
        console.log(filter);
    },

输出为opt1=val1,val1&opt2=val2,val2&opt3=val3,val3

您可以先通过&拆分字符串,然后映射值并使用=,再次拆分它们,现在使用reduce和map,我们将具有相同键名的值合并,最后将它们合并以获得与原始字符串相同的结构

让检查='test_name=sdf&test_name=dfgdfg&test_last_name=dfg'; 让final=check.split'&.mapv=>v.split'='.reducer[k,v]=>{ r、 塞克,r.getk | |【】康卡斯特 返回r },新地图 让output=[…final].mapv=>`${v[0]}=${v[1]。join','}`。join'&'
console.logoutput我不这么认为。。。你可能需要解析…?编辑抱歉我只是让它更简单了先生有一个问题假设让check='test\u name=&test\u name=&test\u last\u name=dfg'显示的输出是'test\u name=,&test\u last\u name=dfg',它应该是test\u name=&test\u last\u name=dfg,没有逗号你需要过滤掉空值吗?您可以检查链接吗?将v[1].join',更改为v[1].filterBoolean.join',就足够了