[React]过滤数据

state数据

this.state = {
      //搜索内容字段
      searchItem: {
        orderId: '',
        phoneNum: '',
        goodsname: '',
      },

      // 订单列表内容
      tabList: [
        { name: '全部' },
        { name: '待付款' },
        { name: '待发货' },
        { name: '待收货' },
        { name: '已完成' },
        { name: '已取消' },
        { name: '待维权' },
        { name: '维权完成' }
      ],
      listTitle: [
        { name: '商品' },
        { name: '单价' },
        { name: '数量' },
        { name: '总价' },
        { name: '收货人' },
        { name: '订单状态' },
        { name: '订单操作' },
      ],
    }

  过滤方法

 filters(data: any) {
    this.filterData(data);
    return data
  };
 //判断是对象还是数组
  filterData(data: any) {
    let dataType = typeof (data);
    if (dataType === 'object') {
      // 验证是不是数组
      if (data instanceof Array) {
        console.log('array')
        this.filterArray(data);
      }

      // 否则就是对象
      else {
        console.log('object')
        this.filterObject(data);
      }
    }
  }
  // 已经是数组
 filterArray(data: any) {
    // 数组遍历
    for (let index in data) {

      let typeItem = typeof (index);

      if (typeItem === 'string') {
        data[index] = ''
      }
      if (typeItem === 'object') {
        this.filterData(index);
      }

    }

  }
 //已知是对象
  filterObject(data: any) {
    //对象遍历
    for (let index in data) {
      // 判断对象里的值是什么
      let typeItem = typeof (index);

      if (typeItem === 'string') {
        data[index] = ''
      }
      if (typeItem === 'object') {
        this.filterData(index);
      }

    }

  }

调用方法执行

  //清除方法
  setClear() {
   let a:any = this.state.tabList
    // 传值data
    const data = this.filters(a)
    this.setState({
      tabList: data
    })
    console.log(this.state.tabList, 2)
  };

 

posted @ 2019-11-15 13:57  旧崖  阅读(2055)  评论(0编辑  收藏  举报