如何在JS中按对象过滤对象数组

奥列克西·泽连科

再会。告诉我如何遍历从对象中获取过滤器值的数组?

const hotels = [
  {
    name: "Marina Inn",
    country: "США"
    address: "Фалираки",
    stars: 4,  
  },    
  {
    name: "Mondrian Suites",
    country: "Греция",
    address: "Родос",
    stars: 5,
  },
  {
    name: "Mondrian Suites",
    country: "США",
    address: "Родос",
    stars: 5,
  }      
]

我想通过来自对象的过滤器过滤对象:

const objFilter = {     
  country: "США",      
  stars: 5,      
}

你应该得到一个数组

[
  {
    name: "Mondrian Suites",
    country: "США",
    address: "Родос",
    stars: 5,
  }      
]
马吉德·巴达维

您可以使用Object#entries来获取过滤器对象的对。

然后,使用Array#filter,遍历数组并使用 返回匹配的元素Array#every

const filterArrByObj = (arr = [], obj = {}) => {
  const filterEntries = Object.entries(obj);
  return arr.filter(e =>
    filterEntries.every(([key, value]) => e[key] === value)
  );
}

const 
  hotels = [{ name: "Marina Inn", country: "США", address: "Фалираки", stars: 4 }, { name: "Mondrian Suites", country: "Греция", address: "Родос", stars: 5 }, { name: "Mondrian Suites", country: "США", address: "Родос", stars: 5 }],
  objFilter = { country: "США", stars: 5 };
console.log( filterArrByObj(hotels, objFilter) );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章