去除数组存在的NaN,前后同步紧挨第一个非NaN值

get_nonull(data) {
      let arr = [];
      data.forEach((el, index) => {
        if (isNaN(el)) {
          let arrs = data.slice(index);
          try {
            arrs.forEach((item, i) => {
              if (!isNaN(item)) {
                const prev = arr[index - i];
                let m = prev ? prev : item;
                //let m = prev ? prev : 0;//前面一次递增
                let ca = (item - m) / (i + 1) + m;
                arr.push(Number(ca.toFixed(2)));
                throw "";
              }
              //是NaN赋值最后一个
              if (arrs.length - 1 === i) {
                const last = arr.slice(-1)[0];
                let m = last ? last : 0;
                arr.push(m);
              }
            });
          } catch (e) {}
        } else {
          arr.push(el);
        }
      });
      return arr;
}
//格式化数据为Number
set_num(data) {
 let arr = [];
 data.forEach((el) => {
  arr.push(Number(el));
 });
 return arr;
},

let arr = [NaN,NaN,NaN,12,2,NaN,NaN,NaN,34,4,2,23,NaN,NaN,NaN]
arr = this.get_nonull(arr)
//[3, 4, 8, 12, 2, 14.5, 12.67, 23.34, 34, 4, 2, 23, 23, 23, 23]
console.log(arr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WebCsDn_TDCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值