【问题标题】:javascript to calculate average from loop outputjavascript从循环输出计算平均值
【发布时间】:2017-02-14 20:31:33
【问题描述】:

我想摆脱“未定义”并平均输出到控制台的 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;
    }

【问题讨论】:

  • 你的问题有点含糊。你到底想知道什么?
  • parseInt 接受一个字符串并返回一个数字!应该这样使用:var number = parseInt("45");!
  • 加上网站上的数字是3,456这个格式,这不是一个有效的数字!

标签: javascript arrays average


【解决方案1】:

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

// 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

【讨论】:

    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多