При суммировании значений из 2 массивов, как я могу ограничить значение в новом массиве? - PullRequest
0 голосов
/ 11 февраля 2020

Идея состоит в том, чтобы смешать значения rbg двух цветов и сохранить мой код в чистоте. У rgb не может быть значения больше 255. Я пытаюсь сделать следующее: после того, как значения добавлены, если число больше 255, оставьте его равным 255.

Один способ, который я пробовал, работает, но я чувствую, что есть повторяющийся код. Другой способ, который я пробовал, кажется, на правильном пути, но НЕ работает.

Это работает так

const mixColors = (color1, color2) => {
    let red = color1[0] + color2[0];
    let green = color1[1] + color2[1];
    let blue = color1[2] + color2[2];

    if (red > 255) {
        red = 255;
    }
    if (green > 255) {
        green = 255;
    }
    if (blue > 255) {
        blue = 255;
    } else console.log(`rgb: ${red}, ${green}, ${blue}`);
};
mixColors([235, 45, 0], [100, 27, 47]);

Я пытаюсь упростить код, но это не работает. Как отдельный вопрос, почему этот способ не работает? Значения добавляются правильно, и кажется, что я просто пропущу мое утверждение if.

const mixColors = (color1, color2) => {
    const newColor = color1.map((a, i) => a + color2[i]);

    if (newColor > 255) {
        newColor[i] = 255;
    }

    console.log(newColor);
    return newColor;
};
mixColors([235, 45, 0], [100, 27, 47]);

Является ли первый путь лучшим, и я слишком обдумываю это? Или есть лучший способ?

1 Ответ

2 голосов
/ 11 февраля 2020

Ваш newColor является массивом, поэтому newColor > 255 не имеет смысла (и не работает). Поместите Math.min внутри обратного вызова .map вместо:

const mixColors = (color1, color2) => color1.map((num, i) => Math.min(num + color2[i], 255));
console.log(mixColors([235, 45, 0], [100, 27, 47]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...