javascript来计算循环输出的平均值

时间:2017-02-14 20:31:34

标签: javascript arrays average

我想摆脱“未定义”并平均输出到控制台的priceList数组值。我使用https://experts.shopify.com/designers网页在Chrome控制台中应用此代码。谢谢你的帮助!

//selects the all of the designer cards
var experts = document.querySelectorAll('.expert-card__content');

//This tells us how many designer cards there are
var expertsQty = experts.length;
var expertContent =document.getElementsByClassName("expert-list-summary txt--minor");

//expertContent[0].innerText
var i;
var priceMedian;
var prices;
var priceList = 0;

for(i=0; i<experts.length; i++){

    //Grabs the content 
    var str = expertContent[i].innerText;

    //This determines the position of the last $ in the text
    var strPosition = expertContent[i].innerText.lastIndexOf("$");

    //This goes to the position of the $ and shows the 1 word after it.
    var expertPrice= str.substring(strPosition + 1);

    //iterate through expert content
    parseInt(expertPrice);
    parseInt(prices);
    priceList = prices += expertPrice;
    }

1 个答案:

答案 0 :(得分:0)

我在您提供的链接中查看了该网站。这是计算平均值的方法:

// get the second <p>s of inside the <div>s with the classes expert-list-summary and txt--minor
var experts = document.querySelectorAll(".expert-list-summary.txt--minor p:nth-child(2)");

var qty = experts.length;                          // the quantity is the cound of those p elements
var prices = 0;                                    // prices must be initialized to 0 (otherwise you get an average of NaN)

for(var i = 0; i < experts.length; i++) {
    var str = experts[i].textContent;              // get the text content of that p element
    str = str.replace(/,/g, '');                   // remove commas as they're not valid in numbers
    var price = parseInt(str.match(/\$(\d+)/)[1]); // use a rgular expression to retrieve the number it's clearer (match any number after the dollar sign, read more about regular expressions)
    prices += price;                               // add this price to the prices (accumulate the prices)
}

var average = prices / qty;                        // the average is the sum of prices divided by the quantity