Трудно описать это заголовком, но это должно быть понятно из описания и кода здесь.Я пытаюсь выбрать наибольшее число из массива из группы пиков, а затем перейти к следующей группе и получить следующий номер пика из следующей группы максимумов.
Так, например, вэтот массив:
const arr = [939, 1301, 253, 1380, 1037, 2279, 2462, 2193, 2121, 1424, 506, 2411, 2456, 2295, 915, 1276, 1532, 1359, 985, 2182, 2407, 2103, 2392, 2294, 765, 1195, 1537, 1409, 858, 1971, 2214, 1311, 1326, 1383, 1231, 1141]
Я хочу выбрать 2462
из первой группы пиков примерно на 1037, 2279, 2462, 2193
, а затем перейти к выбору 2456
из следующей группы на отметке 506, 2411, 2456, 2295, 915
,Местоположения групп неизвестны, вопрос в том, чтобы найти их и выбрать одно наибольшее число из каждой группы.
Это функция, которая у меня есть в данный момент, но она не работает на 100% и не работает.не работают с определенными массивами.
let currHigh = 0, store = [], limit = 2100;
for (let s = 0; s < arr.length; s++) {
if (arr[s] > limit && currHigh === 0) {
currHigh = arr[s]
} else if (arr[s] > limit && arr[s] > currHigh) {
currHigh = arr[s];
} else if (arr[s] < currHigh) {
if (arr[s] < limit) {
store.push(currHigh); currHigh = 0;
}
}
}
console.log(store)
Максимумы всегда очень похожи (2000+), а расположение групп чисел схоже, но не одинаково, поэтому я не могу на это полагаться.
Таким образом, первый массив и ожидаемый / желаемый вывод будут:
const arr = [939, 1301, 253, 1380, 1037, 2279, 2462, 2193, 2121, 1424, 506, 2411, 2456, 2295, 915, 1276, 1532, 1359, 985, 2182, 2407, 2103, 2392, 2294, 765, 1195, 1537, 1409, 858, 1971, 2214, 1311, 1326, 1383, 1231, 1141]
Outputted Peaks: [2462, 2456, 2407, 2294, 2214]
И еще один пример массива с ожидаемым / желаемым выводом:
const arr = [1365, 1324, 1013, 1220, 1259, 2204, 2212, 1938, 1882, 1545, 1236, 2090, 2614, 1949, 1307, 1628, 1780, 1263, 1184, 2184, 1411, 1306, 2010, 2057, 1339, 1624, 2480, 2575, 2425, 2617, 2479, 1929, 1805, 1869, 1341, 1104, 2195, 1661, 1174, 1447, 1761, 1362, 1430]
Outputted Peaks: [2212, 2614, 2184, 2480, 2617, 2195]
РЕДАКТИРОВАТЬ: чтобы сохранить некоторыепутаница, представьте, что если вы возьмете значения в заданном массиве и нанесете их на график, на графике будет несколько пиков, разнесенных друг от друга.Мне нужна функция, которая получает эти пики.Поиск групп - это только один из способов найти вершины.Они были бы как мини горы.Таким образом, вы не хотели бы получать большое число, например, на «стороне горы».
РЕДАКТИРОВАТЬ: Прикрепление изображения для объяснения пиков.Старшее число рядом с другим старшим числом не является пиком, только самое большое число в небольшой группе соседних чисел является пиком.
Окончательное РЕДАКТИРОВАНИЕ: Этот график лучше всего иллюстрирует это, поскольку трудно представить график, просто смотрящий на массив:
https://jsbin.com/nicuciquru/1/edit?js,output
Здесь мне нужны пики [1301, 1380, 2462, 2456, 1532, 2407, 2492, 1537, 2214, 1383]
, которые вы можете увидеть на графике.Затем оттуда эти пики могут легко фильтроваться с пороговым значением, например, для устранения любых пиков ниже 2000.