检查单词是否与阵列中的其他人匹配

时间:2014-11-26 01:58:49

标签: javascript

我是javascript的初学者,如果您发现它有点奇怪或容易,我会提前为我的问题道歉。

以下是我的问题:

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

var myUrl = "www.website.com/products/15/lemon/image1.png";

当我的用户点击图片时,我会得到一个新的水果值,例如字符串“apple”。

var changeCategory = "apple";

检查我的某个水果的单词是否在url中并用新值替换它的更有效方法是什么...或者如果新值实际上在myUrl变量中什么也不做?

4 个答案:

答案 0 :(得分:0)

数组检查,如果元素存在

var category = ["Banana", "Orange", "Apple", "Mango"];
var changeCategory  = category.indexOf("Apple");

<强>输出

2 

**如果找不到元素,return -1

解析网址

var url = window.location.href;解析当前网址

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

var urlArray = url .split( '/' );

var currentFruit = urlArray[3]; //  getting current fruit from url

urlArray[3] = ""; //用双引号传递新的fruitName

//现在迭代数组以形成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];
    }
}

现在你有了网址,只是做了

window.location.href = newUrl; // redirect page to new url now.

答案 1 :(得分:0)

请参阅以下代码。我们的想法是采用每个category元素并使用myUrlindexOf()中查找它。如果indexOf()返回-1以外的内容,则会找到该单词,您可以使用changeCategory替换为replace()的值。

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

var myUrl = "www.website.com/products/15/lemon/image1.png";

var changeCategory = "apple";

for (var i = 0; i < category.length; ++i) {  // Consider each category word.
  if (myUrl.indexOf(category[i]) >= 0) {     // Is it in myUrl?
    myUrl = myUrl.replace(category[i], changeCategory);
    break;                                   // If so, replace it and stop
  }                                          //  looking at the remaining
}                                            //  words.

document.write(myUrl);                       // Test the result.

答案 2 :(得分:0)

当然,有许多方法可以给猫皮肤。您可以使用简单的正则表达式来构建新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
}

如果 categories 中的某个水果位于网址中且替换水果与已经存在的水果不同,则只会创建一个新网址。

答案 3 :(得分:0)

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

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

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