Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery从值数组中分配对象键和值_Jquery_Arrays_Url_Object_Comparison - Fatal编程技术网

jquery从值数组中分配对象键和值

jquery从值数组中分配对象键和值,jquery,arrays,url,object,comparison,Jquery,Arrays,Url,Object,Comparison,好的,我正在构建一个产品页面,页面有动态链接创建,我需要帮助链接,我通过jquery append创建页面上的每个元素,因为这个原因,我不能用php创建链接。所以我一直在努力找出jquery对象和javascript数组之间的区别。我正在尝试获取url数据: ?x=wmen&plist=1&s=tops&c=shirts并对照它检查新数据,如:s=tops&jackets,因此我将url中的所有内容分解为小数组,如['x'、'wmen']、['plist'、'1']…然后对新数据做了同样的检查,

好的,我正在构建一个产品页面,页面有动态链接创建,我需要帮助链接,我通过jquery append创建页面上的每个元素,因为这个原因,我不能用php创建链接。所以我一直在努力找出jquery对象和javascript数组之间的区别。我正在尝试获取url数据:
?x=wmen&plist=1&s=tops&c=shirts
并对照它检查新数据,如:
s=tops&jackets
,因此我将url中的所有内容分解为小数组,如
['x'、'wmen']、['plist'、'1']…
然后对新数据做了同样的检查,如:
['s'、'top'、['c'、'shirts']…
,现在我需要比较这两个数据以防止重复,并且它们按顺序存储,就像它们被剪切时一样:
?x=wmen&plist=1&s=tops&c=shirts
,放置在href中

function correctUrl(x){
        var urlArray = location.search.replace('?', '').split('&').map(function(val){ return val.split('='); }), newur = [],newurl = {},z=0,arr = 'array'; 
        // push url array into new array
        $.each(urlArray,function(){
            newur.push(this);
        });
        // make array of value
         for (var key in link) {
            var array = arr + z;
            array = [];
            // index at 0 
            array.push(key);
            // value 1
            array.push(link[key]);
            z++;
            newur.push(array);
        }
        for (var i in newur) {
            console.log(newur[i]);
            $.each(newur[i], function(i, el){

            });
        }
        console.log(newurl);

        return x;
    }

现在的问题是,我在分配键和值对时遇到了问题。我想让第一个值成为键,第二个值像:
['s','tops']->{s:tops}

好的,多亏@Arun Pjohny的帮助,我找到了答案,答案隐藏在对象“key”中你不能以数组键为目标,因为javascript没有关联数组,但jquery有对象,这些对象有键,在for循环的帮助下,你可以迭代这些对象,获得键和值对,通过重写对象键和值对,你将删除重复项

function correctUrl(link){
        var urlArray = location.search.replace('?', '').split('&').map(function(val){ return val.split('='); }), newur = [],newurl = {},z=0,arr = 'array',x='?'; 
        // push url array into new array
        for (var i in urlArray){
            $.each(urlArray[i],function(i,el){
                newurl[urlArray[i][0]]/* key */ = urlArray[i][1] ; // value
            });
        }
        // make array of value
         for (var key in link) {
            var array = arr + z;
            array = [];
            // index at 0 
            array.push(key);
            // value 1
            array.push(link[key]);
            z++;
            newur.push(array);
        }
        for (var i in newur) {
            $.each(newur[i], function(i, el){
                newurl[newur[i][0]]/* key */ = newur[i][1] ; // value
            });
        }
        for (var i in newurl){
            x += i+'='+newurl[i]+'&';
        }
        return x.slice(0, - 1);
    }

尝试
function correctUrl(){var obj={};var urlArray=location.search.replace('?','').split('&').each(function(val){var parts=val.split('=');obj[parts[0]=parts[1]});console.log(obj);return$.map(obj,function(val,key){return key=val})。join('&');}
这不起作用当目标对象不是dom元素时,不能以这种方式调用each函数。它应该是
$。each(location.search.replace('?','')。split('&'),function(val){