Найти повторяющийся элемент [как удалить повторяющийся класс?]


#1

Как найти и удалить все повторяющийся классы documentBody documentBodyOld.
То есть
структура такая
div
div class=documentBody documentBodyOld
div class=documentBody documentBodyOld(этот удалить)
/div
div
div class=documentBody documentBodyOld
div class=documentBody documentBodyOld(этот удалить)
/div

div
div class=documentBody documentBodyOld
div class=documentBody documentBodyOld(этот удалить)
/div


#2

Способов куча. Расскажу про тот что нравится мне.

  1. Делаем массив из списка классов
  2. Из массива делаем новый без дубликатов. Тут красивый трюк бизарующийся на том что что метод массива indexOf находит индекс первого вхождения элемента.
  3. Делаем из массива строку и записываем ее в className
function removeDuplicatedClasses(node) {
	var classNames = node.className.split(' ')
	var uniqueClassNames = classNames.filter(function (className, index, all) {
		// если indexOf вернул не то значение индекса, которое соответвует значению className
		// значит текущее значение className встречается где-то раньше в массиве all
		// значит элемент не уникальный, не включаем его в результат фильтрации
		return all.indexOf(className) === index 
	})
	node.className = uniqueClassNames.join(' ')
}