代码之家  ›  专栏  ›  技术社区  ›  Success Man

如何根据变量的值为url设置正确的条件((javascript)

  •  0
  • Success Man  · 技术社区  · 6 年前

    <script>
    
        var url = 'http://my-app.test/item';
        var sessionBrand = 'honda';
        var sessionModel = 'jazz';
        var sessionCategory = 'velg';
        var sessionKeyword = 'RS 175/60 R 15';
    
        if(sessionBrand)
            var brand = '?brand='+sessionBrand;
        else
            var brand = '';
    
        if(sessionModel)
            var model = '&model='+sessionModel;
        else
            var model = '';
    
        if(sessionCategory)
            var category = '&category='+sessionCategory;
        else
            var category = '';
    
        if(sessionKeyword)
            var keyword = '&keyword='+this.sessionKeyword;
        else
            var keyword = '';
    
        var newUrl = url+brand+model+category+keyword;
        console.log(newUrl);
    
    </script>
    

    http://my-app.test/item?brand=honda&model=jazz&category=velg&keyword=RS 175/60 R 15
    

    var sessionBrand、sessionModel、sessionCategory和sessionKeyword是动态的。它可以改变。它可以为null,也可以有值

    我有个问题

        var sessionBrand = '';
        var sessionModel = '';
        var sessionCategory = '';
        var sessionKeyword = 'RS 175/60 R 15';
    

    url如下所示:

    http://my-app.test/item&keyword=RS 175/60 R 15
    

    如果url如下所示:

    http://my-app.test/item?keyword=RS 175/60 R 15
    

    我还是搞不懂这个条件

    我怎样才能解决这个问题?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Viktor Kondolovskiy    6 年前

    只需将数组用于params,然后将它们与 & 分离器。例如:

    var url = 'http://my-app.test/item';
    var sessionBrand = 'honda';
    var sessionModel = 'jazz';
    var sessionCategory = 'velg';
    var sessionKeyword = 'RS 175/60 R 15';
    
    var params = [];
    
    if (sessionBrand) {
        params.push('brand=' + sessionBrand);
    }
    
    if (sessionModel) {
        params.push('model=' + sessionModel);
    }
    
    if(sessionCategory) {
        params.push('category=' + sessionCategory);
    }
    
    if(sessionKeyword) {
        params.push('category=' + sessionCategory);
    }
    var newUrl = url + '?' + params.join('&');
    console.log(newUrl);
    
        2
  •  0
  •   Robin Zigmond    6 年前

    & sessionBrand . URL中需要的是 第一 ? ,以及所有其他 & . 如您所见,当没有 会话品牌 .

    没有

    if(sessionBrand)
        var brand = 'brand='+sessionBrand;
    else
        var brand = '';
    
    if(sessionModel)
        var model = 'model='+sessionModel;
    else
        var model = '';
    
    if(sessionCategory)
        var category = 'category='+sessionCategory;
    else
        var category = '';
    
    if(sessionKeyword)
        var keyword = 'keyword='+this.sessionKeyword;
    else
        var keyword = '';
    
    var queryString = '?' + [sessionBrand, sessionModel, sessionCategory, sessionKeyword].filter(function(str) {
        return str.length > 0;
    }).join("&");
    
    var newUrl = url+queryString;