rapid-spreadjs 1.0.42 → 1.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -15629,12 +15629,19 @@ const FormulaUtils = {
15629
15629
  }
15630
15630
  let array = new Array();
15631
15631
  for (let i = 0; i < arr.length; i++) {
15632
- if (!isNaN(arr[i]) && arr[i] != '/') {
15632
+ // if (!isNaN(arr[i]) && arr[i] != '/') {
15633
+ // array[i] = arr[i];
15634
+ // }
15635
+ if (!isNaN(arr[i]) && arr[i] != '/' && arr[i] != '') {
15633
15636
  array[i] = arr[i];
15634
15637
  }
15635
15638
  }
15636
15639
  //avg为舍弃前的平均值
15637
15640
  let avg = FormulaUtils.commFun.getAverage(array);
15641
+ if (array.length === 0 || array.every((value) => value === array[0])) {
15642
+ // console.log('表示所有数据都一样,则直接返回');
15643
+ return avg;
15644
+ }
15638
15645
  //标准差
15639
15646
  let stand = FormulaUtils.commFun.GetDataOddIncreaseEvenDecrease(FormulaUtils.commFun.GetS(array), -2);
15640
15647
  //得到舍弃的范围
@@ -18857,6 +18864,55 @@ const FormulaUtils = {
18857
18864
  return ndcs;
18858
18865
  },
18859
18866
  },
18867
+ {
18868
+ funName: 'YJTXHF',
18869
+ funDesc: '沥青弹性恢复率',
18870
+ funDefaultVal: null,
18871
+ // isContainNullUndefinedVal: true,
18872
+ funParams: [
18873
+ {
18874
+ name: '数值1',
18875
+ repeatable: false,
18876
+ optional: false,
18877
+ },
18878
+ {
18879
+ name: '数值2',
18880
+ repeatable: false,
18881
+ optional: false,
18882
+ },
18883
+ {
18884
+ name: '数值3',
18885
+ repeatable: false,
18886
+ optional: false,
18887
+ },
18888
+ ],
18889
+ funCallback: (spread, sheet, retData) => {
18890
+ //如果传递的参数小于3个,则返回空字符串
18891
+ if (retData.allCellVals.length < 3) {
18892
+ return '';
18893
+ }
18894
+ let a1 = retData.allCellVals[0], a2 = retData.allCellVals[1], a3 = retData.allCellVals[2];
18895
+ var arr = [a1, a2, a3];
18896
+ var avg = (a1 * 1 + a2 * 1 + a3 * 1) / 3; // 算术平均值
18897
+ var max = Math.max(...arr);
18898
+ var min = Math.min(...arr);
18899
+ var dxc = max - min; // 最大值与最小值之差
18900
+ var jg; //输出的结果值
18901
+ // 差值是否超过平均值的 5%
18902
+ if (dxc <= avg * 0.05) {
18903
+ jg = avg;
18904
+ return jg; // 情形1:直接取三值平均
18905
+ }
18906
+ // 情形2、3:差值超过 5%
18907
+ var sx = arr.slice().sort((x, y) => x - y); // 升序
18908
+ var jgc = sx[2] * 1 - sx[1] * 1; // 两个较高值之差
18909
+ if (jgc <= avg * 0.05) {
18910
+ jg = (sx[1] * 1 + sx[2] * 1) / 2;
18911
+ return jg; // 情形2:取两个较高值平均
18912
+ }
18913
+ return '/'; // 情形3:无法取值
18914
+ },
18915
+ },
18860
18916
  ],
18861
18917
  };
18862
18918