Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как проверить в начале весь массив на одно условие, а потом на другое? (https://javascript.ru/forum/misc/80556-kak-proverit-v-nachale-ves-massiv-na-odno-uslovie-potom-na-drugoe.html)

nastya97core 20.06.2020 18:21

Как проверить в начале весь массив на одно условие, а потом на другое?
 
У меня есть несколько массивов данных. К примеру такого вида:
["значение": "asdlkfjhasjd", "значение": "Яблоко", "значение": "adfkljahsdj", "значение": "Банан",]

В массиве может быть только Банан, либо только Яблоко, либо Банан и Яблоко, либо вообще ничего. Я перебираю массив через forEach. Мне нужен Банан, но если Банана нет, то мне нужно Яблоко. По сути мне бы подошло условие:
if (значение == Банан) {...} else if (значение == Яблоко) {...}

но проблема в том, что Банан может быть в конце массива, а скрипт проверяет значение и видит, что Яблоко подходит и возвращает мне Яблоко. А в приоритете всегда у меня Банан. Как бы сделать так, чтобы в случае, если в массиве есть Банан, то он бы и возвращался? Но если банана нет, то искалось бы Яблоко.

И пока я писала этот вопрос, меня начал смущать момент того, что массив будет перебираться 2 раза. А он довольно большой... Как бы ещё в один перебор уместиться?

рони 20.06.2020 18:53

nastya97core,
const  find = (arr, pattern) => pattern.filter(a => arr.includes(a)).shift();
const arr = ["asdlkfjhasjd", "Яблоко", "adfkljahsdj", "Банан"];
const pattern = ["Банан", "Яблоко"];
let item = find(arr, pattern);
alert(item);


Часовой пояс GMT +3, время: 17:17.