[英]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.