Как проверить в начале весь массив на одно условие, а потом на другое?
У меня есть несколько массивов данных. К примеру такого вида:
["значение": "asdlkfjhasjd", "значение": "Яблоко", "значение": "adfkljahsdj", "значение": "Банан",]
В массиве может быть только Банан, либо только Яблоко, либо Банан и Яблоко, либо вообще ничего. Я перебираю массив через forEach. Мне нужен Банан, но если Банана нет, то мне нужно Яблоко. По сути мне бы подошло условие:
if (значение == Банан) {...} else if (значение == Яблоко) {...}
, но проблема в том, что Банан может быть в конце массива, а скрипт проверяет значение и видит, что Яблоко подходит и возвращает мне Яблоко. А в приоритете всегда у меня Банан. Как бы сделать так, чтобы в случае, если в массиве есть Банан, то он бы и возвращался? Но если банана нет, то искалось бы Яблоко.
И пока я писала этот вопрос, меня начал смущать момент того, что массив будет перебираться 2 раза. А он довольно большой... Как бы ещё в один перебор уместиться?
Ответы (1 шт):
Вместо forEach() можно использовать for...of цикл — его можно оборвать, как только найдётся банан, тогда как forEach() будет перебирать весь массив, даже если банан найдётся сразу. (Если вам необходимо использовать метод массива, вместо forEach() можно использовать some() или find() — такой перебор можно оборвать, вернув true; хотя код станет менее очевидным и читабельным).
const array = ['asdlkfjhasjd', 'Яблоко', 'adfkljahsdj', 'Банан'];
let result = null;
for (const item of array) {
if (item === 'Банан') {
result = item;
break;
} else if (item === 'Яблоко') {
result = item;
}
}
console.log(result);