Возврат массива без кавычек

Сценарий

Я хочу отправить данные о товарах в Google Merchant Center.

Что я получаю

"products": ['{"gtin":"5704378978422"}', '{"gtin":"5704378978057"}']

Что я хочу получить

Без одинарных кавычек для каждого члена массива в формате:

"products": [{"gtin":"GTIN1"}, {"gtin":"GTIN2"}]

Как описано в шаге 3 здесь: https://support.google.com/merchants/answer/7519329

Мои настройки Диспетчера тегов Google

  1. Я создал переменную уровня данных {{DLV - ecommerce.purchase.products}} из электронная торговля.покупка.продуктов.
  2. Я создал пользовательскую переменную Javascript со следующим кодом:

Код:

function() {
  var products = {{DLV - ecommerce.purchase.products}};
  return products.reduce(function(arr, prod) { 
    return arr.concat("{" + '"' + "gtin" + '"' + ":" + '"' + prod.gtin + '"' + "}" ); }, []);
}

Что было бы лучшим способом сделать это

Я новичок в JavaScript и буду признателен за любые комментарии и предложения.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
393
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используя функцию concat, вы создаете конкатенацию строк, а не объект. Вероятно, вам следует использовать map вместо reduce. Так:

function() {
  var products = {{DLV - ecommerce.purchase.products}};
  return products.map(function(prod) { 
    return {"gtin": prod.gtin};
  });
}

Это дает мне следующее для моей переменной в режиме предварительного просмотра GTM: [{gtin: '5704378978422'}, {gtin: '5704378978057'}]. gtin": "5704378978057"}] В Google Chrome Inspect я получаю: products:"[object Object],[object Object]" (и ошибка консоли, но это Google API)

nteglskov 24.04.2019 10:51

@nteglskov это не то, что вы ожидаете? Оба они представляют одни и те же данные JS.

Nsevens 24.04.2019 10:55

Я хочу, чтобы это было именно так (включая кавычки): [{"gtin": "5704378978422"}, {"gtin": "5704378978057"}]

nteglskov 24.04.2019 11:25

Эти кавычки вокруг «gtin» просто отображают объект для вас. Они не имеют ничего общего с фактическими данными объекта. Если сервисный API принимает котировки объекта с участием, он также примет одну котировку без. Если вам нужно отправить строку JSON вместо объекта в службу (в чем я сомневаюсь), вы можете JSON.stringify это вернуть сериализованную строку объекта (включая кавычки)

Nsevens 24.04.2019 11:30

Вы хотите этого?

const product = ['{"gtin":"5704378978422"}', '{"gtin":"5704378978057"}']
const newProduct = product.map(row => JSON.parse(row))
console.info(newProduct)

Это решает проблему, но на данный момент он несовместим с Диспетчером тегов Google, который следует использовать в соответствии с OP. «Эта языковая функция поддерживается только для режима ECMASCRIPT6 или лучше: объявление const». и "[..]: функция стрелки."

kgrg 24.04.2019 10:34

Я не уверен, где поместить это в контексте с моим текущим кодом. Не могли бы вы объяснить мне?

nteglskov 24.04.2019 10:56

@nteglskov попробуй заменить свою строчку return products.reduce

kkangil 24.04.2019 11:07

@kkangil Менеджер Google выдает мне ошибку, описанную kgrg выше, не позволяя мне опубликовать контейнер

nteglskov 24.04.2019 11:23

замените const на var и замените row => JSON.parse(row) на function(row) { return JSON.parse(row);}

Nsevens 24.04.2019 11:32

Другие вопросы по теме