之前是过滤掉data中和columnsDataList3中calcCode相同的,现在是要过滤calcCode、startPeriod、endPeriod这三个同时满足的时候才过滤掉,只有一个或者两个满足的时候不过滤
this.attachmentList1 = dt.data.content.filter(item => {
return item.calcCode != this.columnsDataList3[0].calcCode
});
之前是过滤掉data中和columnsDataList3中calcCode相同的,现在是要过滤calcCode、startPeriod、endPeriod这三个同时满足的时候才过滤掉,只有一个或者两个满足的时候不过滤
this.attachmentList1 = dt.data.content.filter(item => {
return item.calcCode != this.columnsDataList3[0].calcCode
});
this.attachmentList1 = dt.data.content.filter(item => {
return checkNotSame(item, this.columnsDataList3[0])
})
function checkNotSame(currentItem, data) {
const sameKeyArr = ['calcCode', 'startPeriod', 'endPeriod']
return !!sameKeyArr.find(key => currentItem[key] !== data[key])
}
this.attachmentList1 = dt.data.content.filter(item => {
const { calcCode, startPeriod, endPeriod } = this.columnsDataList3[0]
return item.calcCode !== calcCode || item.startPeriod !== startPeriod || item.endPeriod !== endPeriod
})
这样?
filter 是满足条件的会留下来,所以:
this.attachmentList1 = dt.data.content.filter(item =>
item.calcCode === this.columnsDataList3[0].calcCode
&& item.startPeriod === this.columnsDataList3[0].startPeriod
&& item.endPeriod === this.columnsDataList3[0].endPeriod
);
如果是要把 3 个属性都与 this.columnsDataList3[0]
中对应的属性相同的 item
过滤掉,可以这样写逻辑
!
+ &&
,先判全相同,再取反this.attachmentList1 = dt.data.content.filter(item => {
return !(item.calcCode == this.columnsDataList3[0].calcCode
&& item.startPeriod == this.columnsDataList3[0].startPeriod
&& item.endPeriod == this.columnsDataList3[0].endPeriod)
});
||
,判一不同this.attachmentList1 = dt.data.content.filter(item => {
return item.calcCode != this.columnsDataList3[0].calcCode
|| item.startPeriod != this.columnsDataList3[0].startPeriod
|| item.endPeriod != this.columnsDataList3[0].endPeriod
});
!
+ every
,逻辑同方法一this.attachmentList1 = dt.data.content.filter(item => {
return !['calcCode', 'startPeriod', 'endPeriod']
.every(prop => item[prop] == this.columnsDataList3[0][prop])
});
some
,逻辑同方法二this.attachmentList1 = dt.data.content.filter(item => {
return ['calcCode', 'startPeriod', 'endPeriod']
.some(prop => item[prop] != this.columnsDataList3[0][prop])
});
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决