我有一個函數,它將來自我站點的dataLayer的信息推送到數組中。我希望能夠改變該陣列中的信息,但是我對如何實現這一目標感到不知所措。如何修改javascript數組的內容 - 可能使用forEach函數
這裏是從我的網站的HTML數據層的一個示例:
<script type="text/javascript">
var dataLayer = dataLayer || [];
dataLayer.push({
'transactionId': 'xxx',
'transactionAffiliation': 'xxx',
'transactionTotal': 27.95,
'transactionTax': 4.46,
'transactionGoodsNet': 18.49,
'transactionGoodsNetNoDiscount': 18.49,
'transactionGoodsTax': 3.51,
'transactionShipping': 5.95,
'transactionTotal_currency': 27.95,
'transactionTax_currency': 4.46,
'transactionGoodsNet_currency': 18.49,
'transactionGoodsNetNoDiscount_currency': 18.49,
'transactionGoodsTax_currency': 3.51,
'transactionShipping_currency': 5.95,
'transactionExchangeRate': 1.00,
'transactionProducts': [{
'sku': 'sku1',
'name': 'name1',
'brand': 'Unbranded',
'category': 'xxxx',
'price': 6.00,
'price_ex': 5.04,
'image': 'xxx_image1.jpg',
'url': 'url1-p2180',
'quantity': 1
}, {
'sku': 'sku2',
'name': 'name2',
'brand': 'Unbranded',
'category': 'xxxx',
'price': 6.00,
'price_ex': 5.04,
'image': 'xxx_image2.jpg',
'url': 'url2-p2180',
'quantity': 1
}, {
'sku': 'sku3',
'name': 'name3',
'brand': 'Unbranded',
'category': 'xxxx',
'price': 5.00,
'price_ex': 4.20,
'image': 'xxx_image3.jpg',
'url': 'url3-p1448',
'quantity': 1
}, {
'sku': 'sku4',
'name': 'name4',
'brand': 'Unbranded',
'category': 'xxxx',
'price': 5.00,
'price_ex': 4.20,
'image': 'xxx_image4.jpg',
'url': 'url4-p1448',
'quantity': 1
}],
'transactionProductCount': 4,
'transactionDiscount': 0,
'transactionDiscountNet': 0,
'transactionDiscountTax': 0
});
</script>
我創建通過transactionProducts
陣列下面javascript函數環路,推動所有url
值的成一個名爲productUrls
的數組:
function getProductUrls() {
var productUrls = []
var numberProducts = dataLayer[0].transactionProductCount
for (var i = 0; i < numberProducts; i++) {
productUrls.push(dataLayer[0].transactionProducts[i].url)
}
return productUrls
}
現在,當我打電話getProductUrls()
功能,它將按預期工作和推動值到productUrls
排列如下:
['url1-p2180','url2-p2180','url3-p1448', 'url4-p1448']
我想acheive是這個數組(最好) - 或新的數組(如果更容易) - 只包含緊跟在「-p」後面的數字,如下所示。
['2180','2180','1448','1448']
我所有的產品網址與「-p」,然後任意數量的數字結束。
我想過使用正則表達式替換值productUrls.replace(/.+\-p/g, '')
,但它不工作,我懷疑replace
僅僅處理字符串,而不是數組的作品。
我懷疑使用forEach
功能,正則表達式陣列內更換每個項目的工作,但我在所有的嘗試都慘遭失敗使用的。
任何幫助將不勝感激,因爲我有點JavaScript的新手。
感謝。這工作得很好。我將'productUrls'映射到一個新數組,如你所說'var arr = productUrls.map(v => v.replace(/.+\- p /,''))''我現在能夠返回這個新的數組在我的函數結束。 – mickymac0