动态 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
我在一条记录上有三 (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