问:

/**
 * 发送取消屏蔽请求
 * @param userFileIds 用户文件ID数组
 * @returns Promise
 */
const sendCancelShieldRequest = async (userFileIds: string[]) => {
  console.log(userFileIds, 'sendCalcel', { userFileIds }

const { data, success, message, code } = await postCancelShield({ userFileIds })
  return { success, message, code }
}

这是我的调用接口的代码,现在userFIleds传进来是一个数组,console中也是数组,但是{userFileIds}打印出来却是:
{

        userFileIds:['xx']

}
这样的数据格式,为什么?

回答:

对象字面量打印差异的原因与解决方案

你的代码中出现的现象是正常的JavaScript/TypeScript行为。让我解释一下原因并提供解决方案。

问题分析

console.log(userFileIds, 'sendCalcel', { userFileIds })

这行代码中:

  • userFileIds 直接打印数组值

  • { userFileIds } 是对象字面量简写,相当于 { userFileIds: userFileIds }

所以控制台会显示:

  • 首先是数组本身:['xx']

  • 然后是字符串:'sendCalcel'

  • 最后是对象:{ userFileIds: ['xx'] }

解决方案

如果你希望统一输出格式,这里有两种修改方案:

方案1:统一使用直接值打印

const sendCancelShieldRequest = async (userFileIds: string[]) => {
  console.log(userFileIds, 'sendCalcel', userFileIds)
  // ... 其余代码
}

方案2:使用更清晰的日志输出

const sendCancelShieldRequest = async (userFileIds: string[]) => {
  console.log('取消屏蔽请求参数:', { userFileIds })
  // ... 其余代码
}

完整代码(推荐方案)

/**
 * 发送取消屏蔽请求
 * @param userFileIds 用户文件ID数组
 * @returns Promise
 */
const sendCancelShieldRequest = async (userFileIds: string[]) => {
  console.log('发送取消屏蔽请求,参数:', { userFileIds })
  
  const { data, success, message, code } = await postCancelShield({ userFileIds })
  return { success, message, code }
}

这样修改后,控制台输出会更加清晰一致,便于调试和理解

更多推荐