如何在js中使用箭头函数的2个条件使用对象的过滤器数组? [重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

假设我有一个像这样的数组:

  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之外的所有项目。那么在这种情况下,它只返回第二项?

javascript lodash arrow-functions
2个回答
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);

1
投票

你可以使用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>
© www.soinside.com 2019 - 2024. All rights reserved.