代码之家  ›  专栏  ›  技术社区  ›  Udders

使用另一个数组中的值按索引从数组中删除

  •  0
  • Udders  · 技术社区  · 2 年前

    this.dataSet

    this.visibleRows = [1, 6, 52, 92, 96, 98, 100];

    这是一个索引数组,我将使用这些索引从中检索数据 this.dataSet .

    this.hiddenRows

    使用 this.visibleRows this.dataSet 是否可以获取不在中的索引 this.visibleRows

    我的想法是,

    this.dataSet.filter((data, index) => {
        if(this.visibleRows.indexOf(index) < 0) {
             this.hiddenRows.push(index);
        }
    });
    

    1 回复  |  直到 2 年前
        1
  •  0
  •   R4ncid    2 年前

    这似乎很管用。我不认为你真的需要躲起来

    class DataHandler {
     
         dataset = [
         {name: 'first'},
         {name: 'second'}
        ]
        
         visibleRows = [1]
       
       hiddenRows = []
        
        getData(){
          return this.dataset.filter((d, i) => this.visibleRows.includes(i))
        }
        
        getHiddenRows(){
          return Object.keys(this.dataset).filter(i => !this.visibleRows.includes(Number(i)))
        }
       }
       
       const data = new DataHandler()
       
       console.log(data.getData())
       console.log(data.getHiddenRows())

    如果数据集很大,也可以使用这种方法

    class DataHandler {
     
         dataset = [
         {name: 'first'},
         {name: 'second'}
        ]
        
         visibleRows = [1]
       
        
        getData(){
          return this.visibleRows.map((i) => this.dataset[i] || null).filter(d => d)
        }
         getHiddenRows(){
          return Object.keys(this.dataset).filter(i => !this.visibleRows.includes(Number(i)))
        }
       }
       
       const data = new DataHandler()
       
       console.log(data.getData())
       console.log(data.getHiddenRows())
        2
  •  0
  •   Ali Tarani    2 年前

    复制Ur数据集

    var hiddenData = dataSet.slice();
    

    然后将可见索引从大索引移到小索引

    this.visibleRows = this.visibleRows.sort().reverse();
    this.visibleRows.forEach(row=>{
        hiddenData.splice(row,1)
    })