You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为指定JSON数据应用filter方法?调用cities.filter("bangalore")未获班加罗尔酒店

解决JavaScript中筛选城市酒店的问题

嘿,我来帮你搞定这个问题!你遇到的问题是因为对JavaScript的Array.filter()方法用法理解有误,咱们一步步来解决:

首先先明确你的原始数据:

{ 
  "cities":[
    { "name":"bangalore","hotels":["park","leela","mac"]}, 
    { "name":"chennai","hotels":["shang","mang","bang"]}, 
    { "name":"hyderabad","hotels":["taj","oberai","ibis"]} 
  ]
}

你尝试用cities.filter("bangalore")来获取班加罗尔的酒店,这是错误的用法——Array.filter()的参数必须是一个回调函数,而不是直接传字符串。这个回调函数需要返回布尔值,用来判断当前元素是否符合筛选条件。

正确的实现方式

方式1:用filter()筛选后提取酒店

如果你坚持用filter,代码应该这样写:

// 假设你的数据存在data变量中
const data = { /* 你的JSON数据 */ };

// 筛选出名称为bangalore的城市对象,返回的是数组
const bangaloreCityArray = data.cities.filter(city => city.name === "bangalore");
// 提取该城市的酒店列表(如果找到的话)
const bangaloreHotels = bangaloreCityArray.length > 0 ? bangaloreCityArray[0].hotels : [];

方式2:用find()更高效(推荐)

因为你只需要匹配单个城市,用Array.find()会更合适——它会在找到第一个匹配元素后立即停止遍历,比filter更高效:

const data = { /* 你的JSON数据 */ };

// 找到名称为bangalore的城市对象
const bangaloreCity = data.cities.find(city => city.name === "bangalore");
// 安全获取酒店列表,没找到的话返回空数组
const bangaloreHotels = bangaloreCity ? bangaloreCity.hotels : [];

更简洁的写法(ES6+)

用可选链操作符?.可以让代码更简洁,同时避免找不到城市时出现报错:

const bangaloreHotels = data.cities.find(city => city.name === "bangalore")?.hotels || [];

这样就能正确获取到班加罗尔的酒店列表["park","leela","mac"]啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:26:09