Есть несколько проблем с кодом, в основном это то, что вы сравниваете логическое значение true, которое больше единицы (невозможно), и меньшая проверка предшествует более строгой проверке (то есть последняя никогда не будет оцениваться) . Кроме того, заголовки не собираются, поэтому сама проверка немного абсурдна.
if (graphData[i].title === "LOW") { // <<< Less strict, blocks the next check
graphColor = "#0D6302";
graphIndex = 4; // The below is true > 1
} else if (graphData[i].Title === "LOW" && graphData[i].Title === "LOW" > 1) {
Вот альтернативный подход, предоставляющий объект настроек и сбор заголовков для проверки количества ранее просмотренных заголовков. Я не совсем знаю logi c того, как использовались переменные graphColor
, graphIndex
и linkedTo
, поэтому YMMV.
const titleSeen = title => titles.filter(titleSeen => titleSeen === title).length > 1
let settings = {
LOW: { color: '#0D6302', index: 4, linkedTo: null },
'MEDIUM-LOW': { color: '#0B7070', index: 3, linkedTo: null },
MEDIUM: { color: '#DC9603', index: 2, linkedTo: null },
'MEDIUM-HIGH': { color: '#DD5F0C', index: 1, linkedTo: null },
HIGH: { color: '#C50710', index: 0, linkedTo: null }
}
let titles = []
for (let i = 0; i < graphData.length; i++) {
let setting = { color: '#000000', index: 0, linkedTo: null }
let currentTitle = graphData[i].title
titles.push(currentTitle)
if (settings.hasOwnProperty(currentTitle)) {
setting = settings[currentTitle]
if (titleSeen(currentTitle)) {
setting.linkedTo = ':previous'
}
}
// setting would need to be used here somehow, due to the loop
}