数据源data,有如下筛选条件: form: { dydj: [{ name: "500kV" }, { name: "220kV" }, { name: "110kV" }, { name: "110kV以下" },], lclx: [ { name: "有功" }, { name: "无功" }, { name: "电压" },], sblx: [{ name: "母线" }, { name: "变压器" }, { name: "线路" }, { name: "机组" }, { name: "并补" },], qtlx: [ { name: "合格点", id: 1 }, { name: "不合格点", id: 0 },], cy: [{ name: "新增" }], },筛选方法为如下:lclx和sblx为'data.类型'中包含其中的条件,如‘data.类型’为‘母线阿斯顿有功’则通过lclx: [{ name: "有功" }]和sblx: [{ name: "母线" }]的筛选,qtlx需要判断‘data.是否合格’的值是否等于qtlx[].id,dydj的条件前三个和qtlx一样需要判断是否和'data.电压等级'相等,第四个‘110kV以下’需要对'data.电压等级'进行判断,看是否小于110kV。 其中,最后的筛选条件各自的数量不确定,例如form.dydj中可能只有第一个,或者一个也没有,五个条件中各自只需满足自身其中一个条件就行,lclx和sblx若同时都有条件的话,需要同时满足各自的一个条件,例如:若lclx[{name:"有功"}],sblx: [{ name: "母线" }],则data中的数据需要满足一条数据包含“有功”且包含“母线”,然后dydj,qtlx,cy,lclx和sblx的组合,这四者若都有条件存在的时候,需要同时满足。给出一个js筛选语句。
时间: 2024-04-09 08:32:38 浏览: 142
选择题.data
根据你提供的筛选条件,以下是一个示例的 JavaScript 筛选语句:
```javascript
const filterData = (data, form) => {
return data.filter(item => {
// 判断是否满足 dydj 的条件
const hasConditionDydj = form.dydj && form.dydj.length > 0;
const isDydjMatched = hasConditionDydj ? form.dydj.some(condition => condition.name === item.电压等级) : true;
// 判断是否满足 lclx 的条件
const hasConditionLclx = form.lclx && form.lclx.length > 0;
const isLclxMatched = hasConditionLclx ? form.lclx.some(condition => item.类型.includes(condition.name)) : true;
// 判断是否满足 sblx 的条件
const hasConditionSblx = form.sblx && form.sblx.length > 0;
const isSblxMatched = hasConditionSblx ? form.sblx.some(condition => item.类型.includes(condition.name)) : true;
// 判断是否满足 qtlx 的条件
const hasConditionQtlx = form.qtlx && form.qtlx.length > 0;
const isQtlxMatched = hasConditionQtlx ? form.qtlx.some(condition => condition.id === item.是否合格) : true;
// 判断是否满足 cy 的条件
const hasConditionCy = form.cy && form.cy.length > 0;
const isCyMatched = hasConditionCy ? item.类型.includes(form.cy[0].name) : true;
// 返回满足条件的数据
return isDydjMatched && isLclxMatched && isSblxMatched && isQtlxMatched && isCyMatched;
});
};
// 示例数据
const data = [
{ 类型: '母线阿斯顿有功', 电压等级: '500kV', 是否合格: 1 },
{ 类型: '变压器无功', 电压等级: '220kV', 是否合格: 0 },
{ 类型: '线路电压', 电压等级: '110kV以下', 是否合格: 1 },
{ 类型: '机组', 电压等级: '110kV', 是否合格: 0 },
];
// 示例筛选条件
const form = {
dydj: [{ name: "500kV" }],
lclx: [{ name: "有功" }],
sblx: [{ name: "母线" }],
qtlx: [{ name: "合格点", id: 1 }],
cy: [{ name: "新增" }],
};
// 调用筛选函数
const filteredData = filterData(data, form);
console.log(filteredData);
```
在这个示例中,`filterData` 函数接收一个数据数组 `data` 和筛选条件对象 `form`。它根据每个数据项的属性值和筛选条件进行判断,满足条件的数据项将被保留在结果数组中。你可以根据实际情况修改数据结构和筛选条件来适应你的需求。
阅读全文