Javascript筛选器功能无法正常运行

时间:2020-04-30 14:50:04

标签: javascript

我有一个包含两个信号的对象。 (2)(2) Sheet1_TrainID(2)(2) Sheet1_Traintype。现在,用户可能想查看trainID或Traintype。因此,我实现了此功能:

我的对象看起来像这样:

var myarray = [{
  "captions": [
    {
      "name": "(2)(2) Sheet1_TrainID",
      "attributes": {},
      "filter": true,
      "sort": true
    },
    {
      "name": "(2)(2) Sheet1_Traintype",
      "attributes": {},
      "filter": true,
      "sort": true
    }
  ],
  "rows": [
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1002,
          "hiddenValue": 1002,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1002,
          "hiddenValue": 1002,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    }
  ],
  "direction": "vertical",
  "attributes": {},
  "clickable": false
}]

我的功能如下:

   function myfilter (value) {
        var afterfilter = myarray.filter(data=>{
      console.log(data)
        return data['rows'].filter(cells=>{ 
            return cells['cells'].filter(d=>{       
            return cells.toString().toLowerCase().includes("trainid".toLowerCase())             
          })
        })
      })
      console.log(afterfilter)
    }

myfilter()

现在我该如何修改我的函数,以便它可以进行部分搜索并找到标题和行的相应对象。

因此,在过滤对象之后,我应该只包含(2)(2) Sheet1_TrainID的数据,而myarray应该如下所示:

var myarray = [{
  "captions": [
    {
      "name": "(2)(2) Sheet1_TrainID",
      "attributes": {},
      "filter": true,
      "sort": true
    }],
    "rows": [{
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        } ]
    }, and so on

因此该数组将不包含与(2)(2) Sheet1_Traintype相关的任何对象

如何修改功能以实现此目的。

var myarray = [{
  "captions": [
    {
      "name": "(2)(2) Sheet1_TrainID",
      "attributes": {},
      "filter": true,
      "sort": true
    },
    {
      "name": "(2)(2) Sheet1_Traintype",
      "attributes": {},
      "filter": true,
      "sort": true
    }
  ],
  "rows": [
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1002,
          "hiddenValue": 1002,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1002,
          "hiddenValue": 1002,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    }
  ],
  "direction": "vertical",
  "attributes": {},
  "clickable": false
}]



function myfilter (value) {
	var afterfilter = myarray.filter(data=>{
  console.log(data)
  	return data['rows'].filter(cells=>{ 
    	return cells['cells'].filter(d=>{       
      	return cells.toString().toLowerCase().includes("id".toLowerCase())         	
      })
    })
  })
  console.log(afterfilter)
}

myfilter()

1 个答案:

答案 0 :(得分:1)

您将不得不分别处理它们...

有些东西会起作用。

var myarray = [{
  "captions": [
    {
      "name": "(2)(2) Sheet1_TrainID",
      "attributes": {},
      "filter": true,
      "sort": true
    },
    {
      "name": "(2)(2) Sheet1_Traintype",
      "attributes": {},
      "filter": true,
      "sort": true
    }
  ],
  "rows": [
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1002,
          "hiddenValue": 1002,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1002,
          "hiddenValue": 1002,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "ICE",
          "hiddenValue": "ICE",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    },
    {
      "cells": [
        {
          "value": 1000,
          "hiddenValue": 1000,
          "type": "data",
          "columnName": "(2)(2) Sheet1_TrainID"
        },
        {
          "value": "IC",
          "hiddenValue": "IC",
          "type": "data",
          "columnName": "(2)(2) Sheet1_Traintype"
        }
      ]
    }
  ],
  "direction": "vertical",
  "attributes": {},
  "clickable": false
}]




function myfilter (value) {
	return value.map(obj => {
    return {captions: (obj.captions.filter(c => c.name.toString().toLowerCase().includes("id".toLowerCase()))), rows: obj.rows.map(row => {
      return {cells:row.cells.filter(c => c.columnName.toString().toLowerCase().includes("id".toLowerCase()))}
    })}
  })
}

console.log(myfilter(myarray))