动态 CRM JavaScript 平均

Dynamics CRM JavaScript Average

我在一条记录上有三 (3) 个小数字段。我需要添加一个额外的 Decimal 字段来生成这些值的平均值。问题是我不知道如何解释缺失值的记录。如果记录中只有 2 个值,我需要 JavaScript 计算这 2 个值的平均值并忽略第三个 Decimal 字段的 NULL 值。

此函数将 运行 onChange 这三个小数字段。

如有任何帮助,我们将不胜感激!

试试这个:

function average(array) {
  var averageArray=array.reduce(function(accumulator, currentValue) {
    return [accumulator[0]+currentValue, accumulator[1]+(currentValue!=null)];
  }, [0,0]);
  return averageArray[0]/averageArray[1];
}

console.log(average([12, null])); // 12
console.log(average([12, null, 14])); // 13
console.log(average([12, null, null, null, 14, 16])); // 14

而在“年长”javascript:

function average(array) {
  var sum=0, count=0;
  for(var i=0; i<array.length; i++) {
    if(array[i]!=null) {
      sum+=array[i];
      count++;
    }
  }
  return sum/count;
}

console.log(average([12, null])); // 12
console.log(average([12, null, 14])); // 13
console.log(average([12, null, null, null, 14, 16])); // 14

这是使用 ES6 特性

的one-liner平均值

const avg = (arr) => arr
  // filter out falsy values (except 0) and not number strings
  .filter(i => i && +i || i == 0)
  // accumulate remaining values with Array.reduce
  .reduce((a, c, _, o) => a + +c / o.length, 0); 
     
console.log(avg([null, null, '','asd'])); // 0
console.log(avg([10, null, ])); // 10
console.log(avg([10, '0', null])); // 5
console.log(avg(['10', 12, '14'])) // 12
console.log(avg(['10', 11, 0])); // 7