Javascript 检查一个单词是否与数组中的另一个单词匹配

Javascript 检查一个单词是否与数组中的另一个单词匹配,javascript,Javascript,我是javascript的初学者,如果您觉得这个问题有点奇怪或太简单,我提前向您道歉 下面是我的问题,例如: var category = ["orange","lemon","apple","banana"]; var myUrl = "www.website.com/products/15/lemon/image1.png"; 当我的用户点击一个图像时,我会得到一个新的水果值,例如字符串apple var changeCategory = "apple"; 有什么更有效的方法来检查我的

我是javascript的初学者,如果您觉得这个问题有点奇怪或太简单,我提前向您道歉

下面是我的问题,例如:

var category = ["orange","lemon","apple","banana"];

var myUrl = "www.website.com/products/15/lemon/image1.png";
当我的用户点击一个图像时,我会得到一个新的水果值,例如字符串apple

var changeCategory = "apple";
有什么更有效的方法来检查我的一个水果的单词是否在url中,并用新值替换它。。。或者如果新值实际上在myUrl变量中,则不执行任何操作?

如果元素存在,则检查数组

输出

**如果未找到元素,则返回-1

解析URL

var url=window.location.href;解析当前url的步骤

//返回一个数组[www.website.com,products,15,lemon,image1.png]

var urlArray=url.split'/'

URLARY[3]=;//以双引号传递新名称

//现在迭代数组以形成url

var arrayLength = urlArray.length;
Var newUrl;
for (var i = 0; i < arrayLength; i++) {
  if(i < arrayLength-1){
    newUrl = newUrl+ urlArray[i]+ "/";
 }else{
    newUrl = newUrl+ urlArray[i];
    }
}

请参阅以下代码。其思想是获取每个category元素,并使用indexOf在myUrl中查找它。如果indexOf返回的不是-1,则已找到该单词,您可以通过replace将其替换为changeCography的值

var类别=[橙子、柠檬、苹果、香蕉]; var myUrl=www.website.com/products/15/lemon/image1.png; var changeCategory=苹果; 对于var i=0;i=0{//它在myUrl中吗? myUrl=myUrl.replaceContegory[i],changeContegory; break;//如果是,请更换并停止 }//看看剩下的 }//单词。
document.writemyUrl;//测试结果。当然,给猫剥皮的方法有很多种。您可以使用一个简单的正则表达式来构建新URL,如果它与旧URL不同,请使用它。否则,什么也不做,例如

var oldURL = 'www.website.com/products/15/lemon/image1.png';
var categories = /orange|lemon|apple|banana/;
var newCategory = 'apple'
var newURL = oldURL.replace(categories, newCategory);

if (newURL != oldURL) {
  // go to newURL
}

只有当类别中的某个水果在URL中并且替换水果与已有水果不同时,才会创建新的URL。

您可以将类别设置为正则表达式

var changeUrlCategory = function( url, newCat ) {
    var cats = /(orange|lemon|apple|banana)/i;
    return url.replace( cats, newCat );
};

var newUrl = changeUrlCategory( existingUrl, 'grape');

看看这个链接你能粘贴更多的信息吗?例如,您现在使用类别数组的目的是什么。这样我就可以为你的问题量身定做一个答案@adam发布了完整的代码,看一看,在编写了这么多javascript之后:谢谢你,迈克尔,这正是我想要的。很遗憾,我不能投票赞成你的答案。没问题。如果您满意,请接受我的答案,并在您获得15点声誉积分后进行投票。感谢您ankur的帮助和您花的时间来帮助我,如果可以的话,我将投票支持您的答案,即使我最终使用了您的方式。。。我选择验证michael laszlo的答案,因为它是用数组中的类别回答我原始问题的答案。再次感谢你,罗布。
var arrayLength = urlArray.length;
Var newUrl;
for (var i = 0; i < arrayLength; i++) {
  if(i < arrayLength-1){
    newUrl = newUrl+ urlArray[i]+ "/";
 }else{
    newUrl = newUrl+ urlArray[i];
    }
}
window.location.href = newUrl; // redirect page to new url now.
var oldURL = 'www.website.com/products/15/lemon/image1.png';
var categories = /orange|lemon|apple|banana/;
var newCategory = 'apple'
var newURL = oldURL.replace(categories, newCategory);

if (newURL != oldURL) {
  // go to newURL
}
var changeUrlCategory = function( url, newCat ) {
    var cats = /(orange|lemon|apple|banana)/i;
    return url.replace( cats, newCat );
};

var newUrl = changeUrlCategory( existingUrl, 'grape');