遍历嵌套的dataLayer数组以返回管道分隔的字符串

时间:2019-01-29 17:15:02

标签: javascript arrays

我们的预订平台上有一个嵌套的dataLayer变量。如果我们要拉出一个包含数组中包含的每种产品类型的字符串,则用户可以创建一个或多个变量。但是,调试此程序时遇到错误。

我要收集的变量的位置是:

dataLayer.booking.products [i] .travelType

try{
  var productList = {};
  for(i=0;i<dataLayer.booking.products.length;i++){
    productList[dataLayer.booking.products[i].travelType];
  }
  return productList.join('|');
}
catch(err){}

我对JS很幼稚,所以我为一个基本问题道歉。

enter image description here

M

1 个答案:

答案 0 :(得分:0)

您的代码显示您正在设置对象productList的新属性,但未定义值,例如{foo: },而不是{foo: "bar"}。它看起来像你想要的是一个的阵列的,您可以添加字符串。例如:

var productList = dataLayer.booking.products.map(function(product) {
    return product.travelType;
});

return productList.join('|');

注意,这是使用Array's map方法,而不受for环。你也可以定义productList作为一个前行的数组,然后使用forEachproducts数组遍历每个项目的方法,但我认为这是更清洁,仍清晰可辨。您可以使用ES6语法进一步减少代码,但是对于您的问题,最好显示定义更清晰的代码。