Я работаю над очень старым веб-сайтом, а это значит, что пока моя команда обновляла материал, старый контент переживал годовщину, и из-за этого у многих продуктов не было изображения… и это было проблемой.

Я уже знал наизусть некоторые продукты, у которых не было изображений. Я на самом деле сохранил данные ранее, чтобы я мог иметь дело с ними в ближайшем будущем. Я знал, что скоро смогу решить эту проблему, мне просто нужно было еще немного подумать.

Я потратил много времени на изучение того, как работают API, и обнаружил, что это очень помогает мне каждый день, особенно потому, что все, что мне нужно знать, было там, ожидая меня. API сайта помогло мне увидеть данные по каждому товару. Также я использую этот плагин, чтобы лучше во всем разобраться.

Во-первых, я назвал «list» конфигурацию window.json, чтобы упростить ее использование;

window.json;
const list = window.json;

Затем, чтобы найти элемент, я сделал эту карту ниже, которая возвращает полный список ссылок на изображения: все ссылки на изображения для всех продуктов, которые были в этом списке, какими бы они ни были:

const productImg = list.map(function(element){ 
  return element.yoast_meta[10].content});

И, наконец, я назвал «img» значение, которое я хочу передать через фильтр списка. По сути, это говорит фильтру: «Скажи мне, это, только если это на 100% равно это». Ссылка была изображением-заполнителем:

const imgFilter = list.filter((img) => img.yoast_meta[10].content === "<https://thiswebsite.com/placeholder.png>");
const imgLink = imgFilter.map(function(element){
	return (element.link)});

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

На самом деле, я решаю 3 проблемы в одной.

Я также использовал тот же код для сопоставления продуктов без прикрепленной компании.

window.json;
const list = window.json;
const idCompanies = list.map(function(element){
 return element.companies});
const companiesFilter = list.filter((comp) => comp.companies[0] == null);
const noCompanies = companiesFilter.map(function(element){
	return (element.link)});

Если значение идентификатора компании было пустым, я знал, что к продукту не привязана компания, и мне было проще это исправить.

Затем с помощью того же кода я смог увидеть, был ли продукт опубликован без сектора. Опять же, если сектор был пуст, я знал, что к продукту не прикреплен ни один сектор:

window.json;
const list = window.json;
const idSector = list.map(function(element){
 return element.sectors});
const sectorFilter = list.filter((sec) => sec.sectors[0] == null);
const noSector = sectorFilter.map(function(element){
	return (element.link)});

ПЛЮС

Однажды мой коллега сделал что-то не так со статусами продуктов: он установил определенную процедуру, чтобы продукты публиковались быстрее, но также публиковал старые вещи, которые были в приватном статусе (для меня, чтобы использовать в будущее). Когда мы заметили ошибку (примерно через 30 минут), мы немедленно остановили процедуру, но я не знал, сколько продуктов было неправильным. Тогда у меня появилась идея: отфильтровать каждый продукт по дате последнего изменения.

const list = window.json;
const yesterday = "2021-10-06";
const modFilter = list.filter((date) => date.modified.includes(yesterday));
const filterMod = modFilter.map(function(element){
	return (element.link)});

Если бы последний раз, когда продукт был изменен, был равен значению «вчера», я бы смог увидеть ссылку на продукт и отредактировать ее обратно.