имею такую проблему.
Есть на входе массив объектов
ga4_items =
[
{
item_id: “111126048”,
price: 58299,
index: 1,
quantity: 1
},
{
item_id: “111125979”,
price: 57399,
index: 2,
quantity: 1
}
];
надо из него сделать также массив объектов, но несколько иной (другие названия имен элементов)
такой
ecomm =
[
{
id: “111126048”,
price: 58299,
google_business_vertical: retail
},
{
id: “111125979”,
price: 57399,
google_business_vertical: retail
}
];
Что то пробую
var ecomm;
function ecom(id, price, google_business_vertical) {
this.id = id;
this.price = price;
this.google_business_vertical = ’retail’;
}
const ga4_items =
[
{
item_id: “111126048”,
price: 58299,
index: 1,
quantity: 1
},
{
item_id: “111125979”,
price: 57399,
index: 2,
quantity: 1
}
];
ga4_items.forEach((element) => {
ecomm = ecom(element.item_id, element.price, ’retail’);
console.log(ecomm.price);
console.log(ecomm.item_id);
});
Должно было бы создаться два объекта. Но результат - Error: ecomm is undefined
Что не так ли?
Спасибо!
dmitry
2
function ecom(id, price, google_business_vertical) {
this.id = id;
this.price = price;
this.google_business_vertical = ’retail’;
}
Код выглядит как будто фунция должна вызываться с new
(тогда this
в теле функции будет ссылаться на новосозданный объект)
Это значит что теоретически вот это исправит код:
ecomm = new ecom(element.item_id, element.price, ’retail’);
Но лучше исправить саму функцию. ecom
. Она должна создавать новый объект, так и напишем.
Сокращенный синтаксис объявления объекта для которого совпадают названия ключей и переменных со значениями для этих ключей:
function ecom(id, price, google_business_vertical) {
return {
id,
price,
google_business_vertical,
}
}
Но я субъективно люблю многословную однозначность:
unction ecom(id, price, google_business_vertical) {
return {
id: id,
price: price,
google_business_vertical: google_business_vertical,
}
}
new забыл - этот момент понятен
подскажите, как в JS выводить переменную по аналогии с php var_dump, print_r
dmitry
4
Обычно используют console.log
.
Иногда этого бывает надостаточно (например чтобы посмотреть в глубь объекта, методы в его цепочке наследования, например) тогда console.dir
.