这个问题在这里已有答案:
假设我有一个像这样的数组:
const items=[{
"taskType": "type2",
"taskName": "two",
"id": "19d0da63-dfd0-4c00-a13a-cc822fc81298"
},
{
"taskType": "type1",
"taskName": "two",
"id": "c5385595-2104-409d-a676-c1b57346f63e"
}]
我想要一个箭头(过滤器)函数,它返回除taskType = type2和taskName = 2之外的所有项目。那么在这种情况下,它只返回第二项?
你可以尝试否定Array.prototype.filter()
的条件
const items=[{
"taskType": "type2",
"taskName": "two",
"id": "19d0da63-dfd0-4c00-a13a-cc822fc81298"
},
{
"taskType": "type1",
"taskName": "two",
"id": "c5385595-2104-409d-a676-c1b57346f63e"
}]
var res = items.filter(task => !(task.taskType == 'type2' && task.taskName == 'two'));
console.log(res);
你可以使用lodash的_.reject()
。使用对象作为谓词,并通过以下方式定义要拒绝的属性和值:
const items= [{
"taskType": "type2",
"taskName": "two",
"id": "19d0da63-dfd0-4c00-a13a-cc822fc81298"
},
{
"taskType": "type3",
"taskName": "two",
"id": "19d0da63-dfd0-4c00-a13a-cc822fc81298"
},
{
"taskType": "type1",
"taskName": "two",
"id": "c5385595-2104-409d-a676-c1b57346f63e"
}]
const result = _.reject(items, { taskType: "type2", taskName: "two" });
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>