2017-01-09 59 views
0

假設你有一段標題那樣:模仿的段落標題類型的JavaScript對象

  • H1 - 頭1
  • H1.1 - SUBHEADER 1.1
  • H1.2 - SUBHEADER 1.2
  • H1。 3 - SubHeader 1.3

我想如果可能將其模仿爲對象調用。 所以如果我打電話H1,它將返回標題Header1,但如果我打電話H1.1 它將返回SubHeader 1.1

我想創建像這樣的對象:

var H1 = { 
    1: SubHeader 1.1, 
    2: SubHeader 1.2, 
    3: SubHeader 1.3, 
} 

的問題是如何實現的呼籲H1

+0

我想你解決錯誤的問題之一。你有一個實際的HTML段落嗎?只需查詢它:'paragraph.querySelector(「h2」)。textContent'等。如果你不這樣做,我會選擇一個更類似標記的表示,而不是一次存儲標題。 –

+0

它不涉及到DOM,我想創建像對象的段落標題的表示,如果它甚至可能。 – felixmosh

+1

如果使用點運算符,JS中的屬性名稱不能以數字開頭 - 您必須使用H1 [1] –

回答

0

你應該建立你的對象是這樣的:

var headers = { 
    "H1" : "Header 1", 
    "H1.1" : "SubHeader 1.1", 
    "H1.2" : "SubHeader 1.2", 
    "H1.3:" : "SubHeader 1.3" 
} 

然後使用它像headers["H1"]headers["H1.1"]

0

一個您所定義的object不能滿足您的要求。對於你的要求,你可以使用下面的對象

var H = { 
'1': "Header 1", 
'1.1': "SubHeader 1.1", 
'1.2': "SubHeader 1.2", 
'1.3': "SubHeader 1.3" 
} 

,簡單地稱他們像

H['1'], H['1.1'], H['1.2'] 
1

下面是做這件事的3種方式。選擇適合您的需求

//Nested objects 
 
var headers = { 
 
    "1": { 
 
    "": "Header 1", 
 
    "1": "Subheader 1.1", 
 
    "2": "Subheader 1.2", 
 
    }, 
 
    "2": { 
 
    "1": "Subheader 2.1" 
 
    } 
 
}; 
 

 
console.log(headers["1"][""]); 
 
console.log(headers["1"]["1"]); 
 

 
//Each header has is own object 
 
var h1 = { 
 
    "": "Header 1", 
 
    "1": "Subheader 1.1", 
 
    "2": "Subheader 1.2" 
 
}; 
 

 
var h2 = { 
 
    "1": "Subheader 1.2" 
 
}; 
 

 
console.log(h1[""]); 
 
console.log(h1["1"]); 
 

 
//One object to rule them all 
 
var headersBis = { 
 
    "1": "Header 1", 
 
    "1.1": "Subheader 1.1", 
 
    "1.2": "Subheader 1.2", 
 
    "2.1": "Subheader 2.1" 
 
}; 
 

 
console.log(headersBis["1"]); 
 
console.log(headersBis["1.1"]);

+0

'H1.1',是必需的調用,而不是'H ['1.1']' – felixmosh

+0

@ FelixMosheev對不起,因爲你提供了一個不匹配的例子。如果你想讓語法'H [「H1.1」]'使用@MirkoVukušić – Weedoze

+0

@FelixMosheev的答案,所以你想用H1.1而不是H [「1.1」]和H [1.1]來調用它?我不認爲這是可能的,因爲你不能引用在JavaScript中沒有括號的數字的對象屬性名稱。 –