翻译请以官方为准
Array.from(document.querySelector('.toc-sticky').childNodes)
.slice(1)
.filter(item => item.tagName !== 'H2')
.reduce((directoryList, node) => {
switch (node.tagName) {
case 'P': {
break
}
case 'DIV': {
directoryList.push({
text: node.innerText
})
break
}
case 'UL': {
const latest = directoryList[directoryList.length - 1]
latest.meaning = Array.from(node.childNodes)
.map(subNode => subNode.innerText)
.filter(item => item)
break
}
default: {
break
}
}
return directoryList
}, [])
.reduce((directory, { text, meaning }) => {
directory[text.toLowerCase()] = meaning
directory[text] = meaning
return directory
}, {})