簡體   English   中英

嘗試創建一個從數組中提取URL的函數。 的JavaScript

[英]Trying to create a function which extracts a URL from an array. JavaScript

因此,基本上我想創建一個函數,當收到警報時,該函數從數組返回URL(在這種情況下,該數組被聲明為“網站”)。 該函數具有兩個參數“網站”和“ searchTerm”。

我正在努力使該功能起作用,以便當我在該功能的searchTerm參數中鍵入yahoo或google或bing時; 我希望它返回相應的URL。

任何幫助或支持,將不勝感激。 抱歉,如果我在解釋中沒有明確表示自己,如果是這種情況,請告訴我,我將盡力使自己的解釋更加清楚。

提前致謝!

嘗試更多類似的方法:

var websites = {google: 'www.google.com', yahoo: 'www.yahoo.com'};
function filterURL(websites,searchTerm) 
{
    return websites[searchTerm] || 'www.defaultsearchwebstirehere.com';
}

**根據評論更新**

像這樣構建您的網站對象(其中輸入是您的鍵值數組,以豎線字符分隔):

var websites = {};
for (var i = 0; i < input.length; i++) {
  var siteToSearchTerm = input[i].split('|');
  websites[siteToSearchTerm[1]] = siteToSearchTerm[0];

}

方法如下:

var websites = ["www.google.com|Google" , "www.yahoo.com|Yahoo" , "www.bing.com|Bing"];

function filterURL(websites,searchTerm) 
{
   for (var i = 0; i < websites.length; i++) {
      if (websites[i].split('|')[1] === searchTerm) {
         return websites[i].split('|')[0];
      }
   }
}

工作實例

您還可以驗證和改進功能:

function filterURL(websites,searchTerm) 
{
   if (typeof websites != 'Array' || ! searchTerm) return false;

   for (var i = 0; i < websites.length; i++) {
      if (websites[i].split('|')[1] === searchTerm) {
         return websites[i].split('|')[0];
      }
   }

   return false;
}

為什么不只使用一個對象?

var websites = {
    Google: 'www.google.com',
    Yahoo: 'www.yahoo.com'
};

function filterURL(sites, searchTerm) {
    if (sites[searchTerm]) {
        return sites[searchTerm];
    } else {
        // What do you want to do when it can't be found?
    }
}

alert(filterURL(websites, 'Google')); // alerts 'www.google.com'

您實際上應該使用類似散列表的結構,這樣就不必每次都遍歷整個數組。 像這樣:

var websites = {
    "Google": "www.google.com",
    "Yahoo": "www.yahoo.com",
    "Bing": "www.bing.com"
};
function filterURL(websites, searchTerm) {
    if (websites[searchTerm] !== undefined)
        return websites[searchTerm];
    else
        return null;
}

我不確定為什么要為此使用數組,因為您真正在做的事情更適合鍵值對。 但是,這是我的處理方式:

function filterURL(websites, searchTerm) {
    var i = 0,
        parts;
    for (i = 0; i < websites.length; i++) {
        parts = websites[i].split("|");
        if (parts[1].toLowerCase() === searchTerm) {
            return parts[0];
        }
    }
}

但是請考慮是否使用了正確的JavaScript對象:

var websites = {
    Google: "www.google.com",
    Yahoo: "www.yahoo.com",
    Bing: "www.bing.com"
}
// Now it's much simpler:
function filterURL(websites, searchTerm) {
    // key has first letter capitalized…
    return websites[searchTerm.charAt(0).toUpperCase() + searchTerm.slice(1).toLowerCase()];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM