Сценарий
Я хочу отправить данные о товарах в Google Merchant Center.
Что я получаю
"products": ['{"gtin":"5704378978422"}', '{"gtin":"5704378978057"}']
Что я хочу получить
Без одинарных кавычек для каждого члена массива в формате:
"products": [{"gtin":"GTIN1"}, {"gtin":"GTIN2"}]
Как описано в шаге 3 здесь: https://support.google.com/merchants/answer/7519329
Мои настройки Диспетчера тегов Google
Код:
function() {
var products = {{DLV - ecommerce.purchase.products}};
return products.reduce(function(arr, prod) {
return arr.concat("{" + '"' + "gtin" + '"' + ":" + '"' + prod.gtin + '"' + "}" ); }, []);
}
Что было бы лучшим способом сделать это
Я новичок в JavaScript и буду признателен за любые комментарии и предложения.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используя функцию concat, вы создаете конкатенацию строк, а не объект.
Вероятно, вам следует использовать map вместо reduce. Так:
function() {
var products = {{DLV - ecommerce.purchase.products}};
return products.map(function(prod) {
return {"gtin": prod.gtin};
});
}
@nteglskov это не то, что вы ожидаете? Оба они представляют одни и те же данные JS.
Я хочу, чтобы это было именно так (включая кавычки): [{"gtin": "5704378978422"}, {"gtin": "5704378978057"}]
Эти кавычки вокруг «gtin» просто отображают объект для вас. Они не имеют ничего общего с фактическими данными объекта. Если сервисный API принимает котировки объекта с участием, он также примет одну котировку без. Если вам нужно отправить строку JSON вместо объекта в службу (в чем я сомневаюсь), вы можете JSON.stringify это вернуть сериализованную строку объекта (включая кавычки)
Вы хотите этого?
const product = ['{"gtin":"5704378978422"}', '{"gtin":"5704378978057"}']
const newProduct = product.map(row => JSON.parse(row))
console.info(newProduct)Это решает проблему, но на данный момент он несовместим с Диспетчером тегов Google, который следует использовать в соответствии с OP. «Эта языковая функция поддерживается только для режима ECMASCRIPT6 или лучше: объявление const». и "[..]: функция стрелки."
Я не уверен, где поместить это в контексте с моим текущим кодом. Не могли бы вы объяснить мне?
@nteglskov попробуй заменить свою строчку return products.reduce
@kkangil Менеджер Google выдает мне ошибку, описанную kgrg выше, не позволяя мне опубликовать контейнер
замените const на var и замените row => JSON.parse(row) на function(row) { return JSON.parse(row);}
Это дает мне следующее для моей переменной в режиме предварительного просмотра GTM: [{gtin: '5704378978422'}, {gtin: '5704378978057'}]. gtin": "5704378978057"}] В Google Chrome Inspect я получаю: products:"[object Object],[object Object]" (и ошибка консоли, но это Google API)