все еще учится JS и столкнулся с этой проблемой, что я не был полностью уверен, как подойти, так что, надеюсь, кто-то может помочь мне вести меня в этом направлении. У меня есть массив изображений продуктов, каждое из которых содержит строку alt
с указанным где-то цветом, таким как
let images = [
{id:1, alt:"A Red Jacket"},
{id:2, alt:"A Red Heather Jacket"},
{id:3, alt:"Picture of Red Heather Awesome Jacket"}
]
У меня также есть массив всех возможных цветов (которые в настоящее время я не использую в своем logi c), но он доступен:
let colorOptions = ["Red", "Red Heather", "Blue", "Soft Red"]
Я пытаюсь проверить каждое изображение в массиве images
, если текст alt
содержит заданный цвет, а затем создать запись цвета в этом объекте с данным цветом.
ie. если строка "A Red Heather Jacket"
содержит экземпляр "Red Heather"
, создайте запись color: "Red Heather"
в этом объекте.
Где я нахожусь на
У меня есть рабочая функция, где я перебираю массив изображений и использую .include () , чтобы проверить, в строке alt есть совпадение. Это работает, когда возможный цвет совпадения составляет два слова (ie. "Red Heather"
) и совпадает с этими двумя словами в строке, но когда я использую что-то вроде "Red"
, тогда он будет соответствовать "Red"
AND "Red Heather"
. Я пытаюсь выяснить, есть ли какой-нибудь способ, которым я мог бы заставить "Красный" просто соответствовать "Красному", а не в других случаях, когда красный упоминается в более длинном цвете?
Ниже приведена функция, которая работает для возможного совпадения "Red Heather"
, но не для «красного» * 1030 *
let images = [
{ id: 1, alt: "A Red Jacket" },
{ id: 2, alt: "A Red Heather Jacket" },
{ id: 3, alt: "A Red Heather Awesome Jacket" }
];
//not using the below array but think it could help
let colorOptions = ["Red", "Red Heather", "Blue"];
function findMatch(array, match) {
for (var i = 0; i < array.length; i++) {
if (array[i].alt.includes(match)) {
array[i].color = match;
}
}
return array;
}
let redHeather = findMatch(images, "Red");
console.log(redHeather);
Возвращает
[
{ id: 1, alt: "A Red Jacket" , color: "Red" },
{ id: 2, alt: "A Red Heather Jacket", color: "Red" },
{ id: 3, alt: "A Red Heather Awesome Jacket", color: "Red" }
]
Ожидаемый результат для findMatch(images, "Red")
[
{ id: 1, alt: "A Red Jacket" , color: "Red" },
{ id: 2, alt: "A Red Heather Jacket" },
{ id: 3, alt: "A Red Heather Awesome Jacket" }
]
Дайте мне знать, если есть другие способы решения этой проблемы, я думал разбить его на массив или использовать match () с регулярным выражением, но не знаю, где go отсюда.