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

Nuxt3中useFetch如何对数组数据进行字段选择或深度选择?

Nuxt3 useFetch处理数组数据时字段选择失效的解决办法

当你使用useFetch的pick选项处理数组数据时失效,是因为pick仅作用于顶层响应对象。当API返回的是数组时,顶层结构是数组而非单个对象,数组本身并没有你指定的title字段,所以pick无法生效。

解决这个问题的核心是使用transform选项手动处理数组中的每个元素,实现字段筛选:

基础实现(仅筛选单个字段)

const { data: useFetchArray } = await useFetch('https://jsonplaceholder.typicode.com/todos/', {
  transform: (response) => response.map(item => ({ title: item.title }))
})

console.log(useFetchArray.value)

通用实现(支持筛选多个字段)

如果需要同时筛选多个字段,可以封装一个工具函数来复用逻辑:

// 定义字段筛选工具函数
const pickArrayFields = (items, fields) => {
  return items.map(item => {
    const pickedItem = {}
    fields.forEach(field => {
      if (item.hasOwnProperty(field)) {
        pickedItem[field] = item[field]
      }
    })
    return pickedItem
  })
}

// 在useFetch中使用
const { data: useFetchArray } = await useFetch('https://jsonplaceholder.typicode.com/todos/', {
  transform: (response) => pickArrayFields(response, ['id', 'title'])
})

console.log(useFetchArray.value)

原理说明

transform选项允许你在数据被赋值给data之前,对原始响应数据进行任意处理。通过遍历数组中的每个对象,我们可以精准提取需要的字段,从而实现和单个对象场景下pick相同的效果,同时适配数组结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:09:58