【问题标题】:Filtering an array based off of another objects values [duplicate]根据另一个对象值过滤数组[重复]
【发布时间】:2022-01-28 23:23:49
【问题描述】:

我想过滤这个程序数组(我已经简化了对象):

const programs = [
      {
        format: "In-Person",
        schedule: "Full-Time",
      },
      {
        format: "Remote",
        schedule: "Full-Time",
      },
      {
        format: "In-Person",
        schedule: "Part-Time",
      },
      {
        format: "Remote",
        schedule: "Part-Time",
      }
    ]

基于过滤器对象:

const filters = {format: "Remote", schedule:"Full-Time"}

我的尝试:

  let filteredPrograms = programs.filter((program) => {
    return Object.entries(filters).every(([key, value]) => {
      program[key] == value;
    });
  });

这应该分析每个程序,并且允许是通过过滤器IF: 对于每个过滤器键,程序[过滤器键]值与过滤器值匹配

但是我得到了一个用于过滤程序的空数组

【问题讨论】:

标签: javascript arrays filter


【解决方案1】:

every回调中返回比较结果:

const programs=[{format:"In-Person",schedule:"Full-Time"},{format:"Remote",schedule:"Full-Time"},{format:"In-Person",schedule:"Part-Time"},{format:"Remote",schedule:"Part-Time"}],filters={format:"Remote",schedule:"Full-Time"};

let filteredPrograms = programs.filter((program) => {
  return Object.entries(filters).every(([key, value]) => {
    return program[key] == value;
  });
});
console.log(filteredPrograms)

或者把它变成一个箭头函数:

const programs=[{format:"In-Person",schedule:"Full-Time"},{format:"Remote",schedule:"Full-Time"},{format:"In-Person",schedule:"Part-Time"},{format:"Remote",schedule:"Part-Time"}],filters={format:"Remote",schedule:"Full-Time"};

let filteredPrograms = programs.filter((program) => {
  return Object.entries(filters).every(([key, value]) => program[key] == value);
});
console.log(filteredPrograms)

【讨论】:

  • 哇哈哈花了 3 个小时在上面,而 .every top 示例的文档没有显示返回,所以我什至没有想到。谢谢
  • 这是重复两次,实际问题和语法错误。 (你的两个 sn-ps 也使用箭头函数,但第二个使用隐式返回)
猜你喜欢
  • 2021-09-02
  • 1970-01-01
  • 2019-09-30
  • 2022-11-01
  • 2021-10-24
  • 2022-11-30
  • 2020-08-15
  • 2019-09-15
  • 2023-02-03
相关资源
最近更新 更多