如何避免在扩展运算符Javascript中使用If和else

如何避免在扩展运算符Javascript中使用If和else,javascript,Javascript,我对JS很陌生。我试图简化我的代码,但它给我一个语法错误。有没有什么方法可以避免使用多个代码,比如不使用If和else语句。下面是我发布的代码供参考 唯一的区别是item.href.replace语句将有 => { 常数测试='x=abc'; 如果location.search=={ […document.queryselectoral'a'] .filterlink=>link.href.includeTest .forEachitem=>item.href=item.href.replace

我对JS很陌生。我试图简化我的代码,但它给我一个语法错误。有没有什么方法可以避免使用多个代码,比如不使用If和else语句。下面是我发布的代码供参考

唯一的区别是item.href.replace语句将有

=> { 常数测试='x=abc'; 如果location.search=={ […document.queryselectoral'a'] .filterlink=>link.href.includeTest .forEachitem=>item.href=item.href.replace`${test}`,location.search; }否则{ […document.queryselectoral'a'] .filterlink=>link.href.includeTest .forEachitem=>item.href=item.href.replace`?${test}`,location.search; } };
只需在操作之前指定所需的字符串即可

常数测试='x=abc'; 让搜索=位置。搜索==?测试:`?${test}`; […document.queryselectoral'a'] .filterlink=>link.href.includeTest .forEachitem=>item.href=item.href.replacesearch,location.search;
只需在操作之前指定所需的字符串即可

常数测试='x=abc'; 让搜索=位置。搜索==?测试:`?${test}`; […document.queryselectoral'a'] .filterlink=>link.href.includeTest .forEachitem=>item.href=item.href.replacesearch,location.search;
我们可以通过3个步骤进行重构:

将document.queryselect或all'a'移到顶部 过滤结果 在函数中返回结果 生成的代码可能如下所示:

const replaceQueryParams=函数测试{ const matchingLinks=[…document.queryselectoral`a[href~=${test}]`]; 返回matchingLinks.maplink=>link.href=link.href.replace`?${test}`,window.location.search; }; 然后我们可以像这样使用replaceQueryParams函数:

const replacedLinkStrings=replaceQueryParamsmy测试字符串; 如果replacedLinkStrings.length>0{ 在这里做点什么; }
我们可以通过3个步骤进行重构:

将document.queryselect或all'a'移到顶部 过滤结果 在函数中返回结果 生成的代码可能如下所示:

const replaceQueryParams=函数测试{ const matchingLinks=[…document.queryselectoral`a[href~=${test}]`]; 返回matchingLinks.maplink=>link.href=link.href.replace`?${test}`,window.location.search; }; 然后我们可以像这样使用replaceQueryParams函数:

const replacedLinkStrings=replaceQueryParamsmy测试字符串; 如果replacedLinkStrings.length>0{ 在这里做点什么; }
那么,实际的清洁解决方案是:

  [...document.querySelectorAll('a')]
        .filter(link => link.href.includes(test))
        .forEach(link => link.search = link.search.replace(test, location.search));

那么,实际的清洁解决方案是:

  [...document.querySelectorAll('a')]
        .filter(link => link.href.includes(test))
        .forEach(link => link.search = link.search.replace(test, location.search));

是吗?应该在字符串中?您可以使用包含选择器而不是筛选器:My bad it应该在字符串中它应该是什么意思?只需使用a来追加?取决于搜索是否为空字符串,是吗?应该在字符串中?您可以使用包含选择器而不是筛选器:My bad it应该在字符串中它应该是什么意思?只需使用a来追加?这取决于搜索是否为空字符串,这很好。谢谢你的提示,很好。感谢tipsI不要认为这是你想要的选择器,你可以移除排列并使用forEach。我不认为这是你想要的选择器,你可以移除排列并使用forEach