javascript - 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()
解决方案
您将不得不单独处理它们...
这是可行的。
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))
推荐阅读
- r - 有没有办法创建一个包含研究日期(每个参与者不同)作为附加分组变量的多面 ggplot?
- authentication - 护照未在 API Next JS 中进行身份验证
- logstash - 将输入标识符添加到 docker 中的 logstash 日志记录
- python - python 3.8中多边形的比例着色
- java - SimpleDateFormat 可以打印时区吗?
- c++ - 是否需要锁定阅读对象?
- react-native - 8:尝试获取用户当前位置时出现位置不可用错误
- java-ee-6 - 如何将 UserOptions 保存在 Web 应用程序中
- python - Tensorflow 概率 - MCMC 样本链 - TypeError: Tensor is unhashable - Mac M1
- reactjs - Jest 无法找到 .d.ts 扩展名并创建 React 应用程序以防止覆盖“moduleFileExtensions”