簡體   English   中英

訪問對象的屬性名稱

[英]Accessing a property name of an object

這里與這個問題略有關系。

我的問題:

我正在編寫一些腳本,它將讀取頁面的引用URL並檢查它的來源,即Google,Bing等。現在我知道我可以做一個document.referrer.search('google'); 但是我不想這樣做,因為從數組或對象中讀取值是有意義的。 我創建了一個對象,其中包含我要搜索的術語和屬性名稱,如下所示:

var searchProviders = {
  "google": "google.com",
  "bing": "bing.com",
  "msn": "search.msn",
  "yahoo": "yahoo.co",
  "mywebsearch": "mywebsearch.com",
  "aol": "search.aol.co",
  "baidu": "baidu.co",
  "yandex": "yandex.com"
};

現在,我想知道的是我可以遍歷這個對象並執行document.referrer.search(searchProviders[0])然后返回屬性名稱嗎? 所以,例如,如果它包含, google.com我希望它返回google 我希望返回此術語(而不是搜索術語)的原因是因為此值需要在以后使用。

我記得在上面發布的問題中讀到你只能使用foreach語句迭代一個對象 - 我還有另一種方法嗎? 當然,如果我可以使用foreach語句,但我希望語句在找到正確的值時中斷(因此我想使用if )。

所以我有點擔心什么是最好的方法。 任何幫助將不勝感激,希望我已經解釋好一切 - 如果沒有請告訴我,我會更新我的問題。

你應該能夠像這樣迭代:

for (var key in searchProviders) {
    if(!searchProviders.hasOwnProperty(key)) { continue; }
    var URL = searchProviders[key];
    if (document.referrer === URL) {
      return key;
    }
}

單程;

var SearchProviders = {
    Tags : {
        "google":"google.com",
        "bing":"bing.com",
        "msn":"search.msn",
        "yahoo":"yahoo.co",
        "mywebsearch":"mywebsearch.com",
        "aol":"search.aol.co",
        "baidu":"baidu.co",
        "yandex":"yandex.com"
    },
    lookup : function(tag, fuzzy) {
        tag = tag.toLowerCase();
        for (var k in this.Tags) {
            if (this.Tags[k] === tag || (fuzzy && tag.indexOf(this.Tags[k]) >= 0))
                return k;
        }
        return null;
    }
};

var name = SearchProviders.lookup("google.com")
name && alert(name);

var name = SearchProviders.lookup("blah.google.com", true)
name && alert(name);

您可能正在使用鍵,您可以更輕松地使用值。 考慮使用對象數組:

var searchProviders = [{
    name: "google",
    url: "google.com"
    },{
    name:"bing",
    url: "bing.com"}];

暫無
暫無

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

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