You need to enable JavaScript to run this app. JS中如何使用对象作为过滤条件筛选对象数组
优惠活动
大模型
产品
解决方案
定价
更多

JS中如何使用对象作为过滤条件筛选对象数组

你可以结合Array.prototype.filter()、Object.entries()和Array.prototype.every()三个方法实现需求,具体实现代码如下:

// 先补全原数组的语法错误:第一个元素country属性后加英文逗号
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,      
}

// 筛选逻辑
const filteredHotels = hotels.filter(hotel => {
  return Object.entries(objFilter).every(([filterKey, filterValue]) => {
    return hotel[filterKey] === filterValue
  })
})

console.log(filteredHotels)

逻辑说明

  • filter方法遍历原数组,返回所有符合校验规则的元素组成的新数组
  • Object.entries(objFilter)会将过滤对象转为[键, 值]格式的二维数组,方便遍历所有过滤条件
  • every方法校验当前数组元素是否满足所有过滤条件:只有当前酒店对象的所有过滤字段的值和过滤规则完全相等时,才会被保留到结果中

运行上述代码得到的结果和你给出的预期输出完全一致。

内容的提问来源于stack exchange,提问作者Oleksii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 16:15:02