Использование пользовательского макроса javascript для форматирования данных транзакций электронной коммерции в формате слоев данных GTM

Я работаю над реализацией Диспетчера тегов Google для веб-сайта электронной коммерции.

К сожалению, мы не можем жестко закодировать DataLayers. Поэтому ищу обходные пути. Я думал, что смогу реализовать слои данных самостоятельно, используя диспетчер тегов Google и собственный макрос javascript. Сейчас я работаю над событием покупки. Я успешно очистил страницу подтверждения покупки и получил три переменные: productName, productId и productPrice. Это все, что мне нужно на данный момент. Эти три переменные представляют собой массивы в случае, если в рамках одной транзакции приобретается несколько продуктов. Таким образом, переменные выглядят так, как показано ниже.

Теперь моя цель — отформатировать эти данные в формате datalayers, чтобы их можно было использовать в GTM и GA.

Смотрите мой код ниже

Спасибо за вашу помощь!

Джек

//this is what I currently have

var productName = [ 'Product A', 'Product B', 'Product C']
var productId = ['1111', '2222', '3333']
var productPrice = [2.99, 4.95, 6.95]



//this is the format I want to achieve

var products = [{
        'name': 'Product A',
        'id': '1111',
        'price': '2.99'                        
       },
       {
        'name': 'Product B',
        'id': '2222',
        'price': '4.95'
        },
        {
        'name': 'Product C',
        'id': '3333',
        'price': '6.95'
       }]
Поведение ключевого слова "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
174
1

Ответы 1

Это будет работать, но я не уверен в поддержке во всех браузерах.

var column = ['name', 'id', 'price']
var productName = ['Product A', 'Product B', 'Product C']
var productId = ['1111', '2222', '3333']
var productPrice = [2.99, 4.95, 6.95]
var agg = [productName, productId, productPrice];
var row = Object.keys(agg[0])
        .map(colNumber => agg.map(rowNumber => rowNumber[colNumber]))
var arr = row.map(function(row) {
  return row.reduce(function(result, field, index) {
    result[column[index]] = field;
    return result;
  }, {});
});

var products = arr.reduce(function(acc, cur, i) {
  acc[i] = cur;
  return acc;
}, {});

console.info(products)

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