使用动态添加的输入在数组中平移每个数字

时间:2016-01-16 02:11:27

标签: javascript jquery arrays standard-deviation

我正在尝试将用户输入的一组数据的标准差计算为具有动态添加输入的表单。到目前为止,我已经能够计算数组中元素的总和,但我无法弄清楚如何对数组的每个元素进行平方。我搜索了这个论坛,但是从唯一适用的结果(Square each number in an array in javascript)中尝试建议似乎不起作用。以下是我的代码片段:

$(".calcSD").click(function() {
       $("input[type=text]").each(function() {
        arr.push($(this).val().trim() || 0);
        sum += parseInt($(this).val().trim() || 0);
        });

其中.calcSD是用户点击执行计算的按钮。此外,数组的长度由var number = arr.sort().filter(Boolean).length;给出,因为脚本旨在过滤掉任何留空的输入。

此外,如果它有所不同,输入会通过以下方式动态添加到数组中:

$('.multi-field-wrapper').each(function() {
  var $wrapper = $('.multi-fields', this);
  $(".add-field", $(this)).unbind('click').click(function(e) {
    $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
  });

所以我问:如何确定结果数组中每个元素的平方?

3 个答案:

答案 0 :(得分:1)

  

pow()方法将x的值返回到y(x ^ y)

的幂
||中的{p> parseInt如果返回0

,则会将falsey用作基数

$(".calcSD").click(function() {
  var sum = 0;
  var arr=[];
  $("input[type=text]").each(function() {
    var squared = Math.pow(parseInt(this.value)||0, 2);
    arr.push(squared);
    sum += squared;
  });
  alert(sum);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input type="text">
<input type="text">
<button class="calcSD">Calculate</button>

答案 1 :(得分:0)

我可能没有正确地跟着你,但是当你把它推到阵列时,你不能自己乘以这个值吗?

$(".calcSD").click(function() {
       $("input[type=text]").each(function() {
        arr.push(($(this).val()*$(this).val()).trim() || 0);
        sum += parseInt($(this).val().trim() || 0);
});

答案 2 :(得分:0)

最终我希望能够对数组中元素的平方进行求和(因为它是计算SD的一部分)所以我这样做了它的工作原理:

var sumXsq = 0;    
for(var i = 0 ; i <= number ; i++) {
    sumXsq += parseInt(arr[i]*arr[i]);
} 

但不如Rayon的回答那么好。