js找出数组中的空值并将空值的前一个值赋值给本身

宋国庆
  • 40
  1. 打印实例
  2. 数组中画绿色框的位置存在值,但是标注绿色数组的地方:数字1 不存在值,就要获取画绿色框的值, 数字2 也不存在值也要获取画绿色框的值 (如果数字1获取到了绿色框的值了 ,数字2就直接获取 数字1的值)数字3也同理
  3. 这个空值位置不确定,用大绿色框已做标注了
  4. 代码 (该数组是两个数组合并得到的)
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    var arr1 = [{
        hour: '2021-12-01',
        val: 'arr1数组1.1',
        val2: 'arr1数组1.2',
      },
      {
        hour: '2021-12-02',
        val: 'arr1数组2.1',
        val2: 'arr1数组2.2',
      },
      {
        hour: '2021-12-03',
        val: 'arr1数组3.3',
        val2: 'arr1数组3.4',
      },
      {
        hour: '2021-12-08',
        val: 'arr1数组4.1',
        val2: 'arr1数组4.2',
      },
      {
        hour: '2021-12-12',
        val: 'arr1数组5.1',
        val2: 'arr1数组5.2',
      },
      {
        hour: '2021-12-18',
        val: 'arr1数组6.1',
        val2: 'arr1数组6.2',
      },
      {
        hour: '2021-12-30',
        val: 'arr1数组7.1',
        val2: 'arr1数组7.2',
      },
    ]

    var arr2 = [{
        time: '2021-12-01',
        str: 'arr2数组1'
      }, {
        time: '2021-12-02',
        str: 'arr2数组2'
      },
      {
        time: '2021-12-03',
        str: 'arr2数组3'
      },
      {
        time: '2021-12-26',
        str: '我是临近值1'
      },
      {
        time: '2021-12-27',
        str: '临近值2'
      },
      {
        time: '2021-12-28',
        str: ''
      },
      {
        time: '2021-12-29',
        str: ''
      },
      {
        time: '2021-12-30',
        str: '30号'
      },
    ]
    let arrData = [];

    // 找出arr1 与 arr2 不相等的数组
    arr1.forEach(element => {
      var isExist = false;
      arr2.forEach(item => {
        if (item.time == element.hour) {
          isExist = true;
          return
        }
      });
      if (!isExist) {
        // 将 arr1 与 arr2 不相等的日期 赋值到arrData 【arr1 赋值】
        arrData.push({
          date: element.hour,
          valStr1: element.val,
          valStr2: element.val2,
          valStr3: '',
        })
      }
    });
    // 找出arr2 与 arr1 不相等的数组
    arr2.forEach(element => {
      let isExist1 = false;
      arr1.forEach(item => {
        if (element.time == item.hour) {
          isExist1 = true;
          return
        }
      });
      if (!isExist1) {
        // 将 arr2 与 arr1 不相等的日期 赋值到 arrData 【arr2 赋值】
        arrData.push({
          date: element.time,
          valStr1: '',
          valStr2: '',
          valStr3: element.str,
        })
      }
    });
    // let list = [];
    // list = this.array1.filter(item => {
    //   return array2.indexOf(item) === -1
    // });
    // 找出arr1 与 arr2 时间相等的数组
    arr1.forEach(item => {
      arr2.forEach(element => {
        if (item.hour === element.time) {
          // 将arr1 与 arr2 相等的日期 赋值到 arrData
          arrData.push({
            date: item.hour,
            valStr1: item.val,
            valStr2: item.val2,
            valStr3: element.str,
          })
        }
      })
    })
    // 日期排序
    arrData.sort(function (a, b) {
      return b.date > a.date ? -1 : 1
    })
    // console.log(arrData, '理想数组');
    // 处理理想数组中 valStr3 中的空值
    arrData.forEach(it =>{
      
    })
  </script>
</body>
</html>
回复
阅读 443
1 个回答
arrData.reduce((pre, it) =>{
    it.valStr3 = it.valStr3 || pre.valStr3
    return it
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏