2016-11-28 75 views
0

我在脚本中有一个for循环,循环访问一组markerNodes结果。我想知道,创建一个total变量有多简单,它在最后输出amount &输出中的整数值?计算循环中JS变量中的值的总数

for (var i = 0; i < markerNodes.length; i++) { 
    var name = markerNodes[i].getAttribute("name"); 
    var address = markerNodes[i].getAttribute("address"); 
    var amount = markerNodes[i].getAttribute("amount"); 
    var distance = parseFloat(markerNodes[i].getAttribute("distance")); 
    var latlng = new google.maps.LatLng(
     parseFloat(markerNodes[i].getAttribute("lat")), 
     parseFloat(markerNodes[i].getAttribute("lng"))); 
    createOption(name, distance, i); 
    createMarker(latlng, name, address, total); 
    bounds.extend(latlng); 
} 

回答

2

很容易添加

var total = 0; 
for (var i = 0; i < markerNodes.length; i++) { 
    var name = markerNodes[i].getAttribute("name"); 
    var address = markerNodes[i].getAttribute("address"); 
    var amount = markerNodes[i].getAttribute("amount"); 

    total += parseFloat(amount); 

    var distance = parseFloat(markerNodes[i].getAttribute("distance")); 
    var latlng = new google.maps.LatLng(
     parseFloat(markerNodes[i].getAttribute("lat")), 
     parseFloat(markerNodes[i].getAttribute("lng"))); 
    createOption(name, distance, i); 
    createMarker(latlng, name, address, total); 
    bounds.extend(latlng); 
} 

console.log(total); 
+0

只有轻微这里的问题是,它并没有真正数学加'amount'值加在一起 ​​- 只是一个巨大的数字串将它们结合在一起。 – michaelmcgurk

+2

然后看到该行后面的注释,使用'parseFloat(amount)'@michaelmcgurk – baao

+1

在回答中编辑它@michaelmcgurk – baao

0

这是另一种方法。 (通过使用Array.reduce)

var total = Array.prototype.reduce.call(
    markerNodes, 
    (prev, cur) => prev + Number(cur.getAttribute("amount")), 
    0 
); 
+0

真正的孤立,但这是多余的迭代,如果你已经有一个for循环 – aw04

+0

@ aw04你是对的。 –