如何用字符串连接数组的每个元素

时间:2019-01-22 15:03:29

标签: javascript

html中的

<span class="cart-prize">30.00</span>

const total = [];
const items = document.querySelectorAll('.cart-prize'); //item price displaying on the cart when cart popups


 items.forEach(function(item)
 {               
     total.push(parseFloat(item.textContent)).toFixed(2); 
 });



const totalMoney = total.reduce((accumulator, EachArrayValue) 
  => accumulator + EachArrayValue); 

items.forEach((each) => each = "$"+ each.textContext);

document.getElementById("totalMoney").textContent = 
"$"+totalMoney; //works ok

document.getElementById("itemTotal").textContent = 
total.length + " items"; //works ok

在这里使用reduce方法对总数组中的所有价格元素求和后,我尝试将“ $”字符串与“ cart-prize”的每个文本内容连接起来:

items.forEach((each) => each = each.textContext + "$");

但未成功。购物车上仅显示不带美元符号的浮点数

我不知道自己在哪里弄错了。此方法有问题吗:items.forEach((each) => each = "$" + each.textContext);

3 个答案:

答案 0 :(得分:1)

您通过这种替代失去了对原始each对象的引用

items.forEach((each) => each = "$"+ each.textContext);

您应该尝试使用标准的for循环

for (let i = 0; i < items.length; i++) {
    items[i] = "$"+ items[i].textContext;
}

答案 1 :(得分:0)

使用items.forEach((each) => each = each.textContext + "$");的问题在于,它仅在items数组之间进行迭代,而没有创建新的数组。

您可以使用forEach来创建一个新数组,而不是使用map,就像下面的示例一样,该数组再次分配给items

let items = [{textContent: "example1"}, {textContent: "example2"}];

items = items.map((object) => {
    object.textContent = "$" + object.textContent;
    return object;
});

console.log(items);

有关mapforeach之间差异的更多信息,请查找here

答案 2 :(得分:0)

misorude的评论正确。您需要做的就是在forEach循环中使用each.textContent而不是each

items.forEach((each) => each.textContent = "&"+each.textContent);