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

Vue async/await场景下如何从接口返回JSON中筛选保留指定字段

解决方案

你不需要使用Promise.all,这是纯同步的数据结构转换操作,只需逐层显式提取你需要保留的白名单字段即可,修改后的fetchCars方法如下:

async fetchCars() {
  try {
    let response = await fetch("https://cars.com/api/")
    let rawData = await response.json()
    // 按白名单逐层过滤字段
    this.cars = {
      // 顶层保留字段
      owner: rawData.owner,
      cars: rawData.cars?.map(car => ({
        // 车辆层级保留字段
        model: car.model,
        make: car.make,
        features: car.features?.map(feature => ({
          // 配置层级保留字段
          gear: feature.gear,
          roof: feature.roof
        })) || []
      })) || []
    }
  } catch (e) {
    console.log(e)
  }
}

补充说明

  • 代码中使用了可选链?.和兜底空数组|| [],避免接口返回字段缺失时出现报错
  • 所有保留的字段都显式声明,后续如果需要调整保留字段,直接修改对应层级的取值逻辑即可
  • 如果需要处理更复杂的多层嵌套结构,也可以把字段过滤逻辑封装成通用的白名单过滤函数复用,示例如下:
// 通用白名单过滤函数
function filterByWhitelist(obj, whitelist) {
  return Object.fromEntries(
    Object.entries(obj).filter(([key]) => whitelist.includes(key))
  )
}

// 使用示例:顶层保留owner、cars字段
const topLevelFiltered = filterByWhitelist(rawData, ['owner', 'cars'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:48:03