Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить массив из двух исходных массивов (https://javascript.ru/forum/misc/84508-poluchit-massiv-iz-dvukh-iskhodnykh-massivov.html)

IZUM 04.10.2022 14:11

Получить массив из двух исходных массивов
 
Вложений: 1
Требуется получить два массива: yL = [0, 0.25, -0.375, 0.75, -0.5, 0.5] из двух массивов
xsL = [2, 7, 10, 15, 19] и xoL = [0, 4, 8, 13, 17] и yP = [-0.5, 0.5, -0.5, 0.75, 0.75, 0] из двух массивов: xsP = [27, 31, 37, 42, 46] и xoP = [29, 34, 39, 44, 48]. На картинке представлены данные массивы в виде схемы их расположения. Представленные линии соединяющие точки после своего перемещения в результате принудительного перемещения начальных точек hLL = 0.5 и hPP = -0.5 для левой и правой волн, соответственно.

рони 04.10.2022 17:17

IZUM,
let hLL = 0.5,
            xsL = [2, 7, 10, 15, 19],
            xoL = [0, 4, 8, 13, 17],
            i = xsL.length,
            yL = [hLL];

        for (; i--;) {
            let delta = hLL / (xsL[i] - xoL[i]);
            hLL += ((xsL[i - 1] ?? xoL[i]) - xsL[i]) * delta;
            yL.unshift(hLL)
        }
        console.log(yL, '[0, 0.25, -0.375, 0.75, -0.5, 0.5]')
        let hPP = -0.5,
            xsP = [27, 31, 37, 42, 46],
            xoP = [29, 34, 39, 44, 48],
            length = xsP.length,
            yP = [hPP];
        for (let k = 0; k < length; k++) {
            let delta = hPP / (xsP[k] - xoP[k]);
            hPP += ((xsP[k + 1] ?? xoP[k]) - xsP[k]) * delta;
            yP.push(hPP)
        }
        console.log(yP, '[-0.5, 0.5, -0.5, 0.75, 0.75, 0]')

IZUM 04.10.2022 19:10

Если, я не ошибаюсь, то по картинке, да и по сути, должно быть console.log(yP, '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]') То есть, второй элемент 0.75 должен быть со знаком (-) минус

рони 04.10.2022 19:19

IZUM,
да, видимо ваш первый пост не совсем точен)))

IZUM 04.10.2022 19:24

yP = [-0.5, 0.5, -0.5, 0.75, -0.75, 0] '[-0.5, 0.5, -0.5, 0.75, 0.75, 0]' В таком виде выводится yP в консоль. Можно yP представить в нормальном виде массива. Также, выводится и yL.

рони 04.10.2022 19:32

IZUM,
не осилил, предоставленный код работает правильно, выводит результат в виде массива и с правильными данными, что не так? или вы свою строку поправить не в состоянии?
console.log(yP, '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]')

рони 04.10.2022 19:33

IZUM,
или просто console.log(yP);

рони 04.10.2022 19:34

:-? и console.log(yL)

IZUM 04.10.2022 19:35

Да, я так и сделал. теперь всё, как надо. большое спасибо.

рони 04.10.2022 19:36

IZUM,
console.log(yP, '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]') - параметр '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]' дан просто для наглядности и удобства сравнения полученного результата и ожидаемого.


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