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

如何将多值属性对象转换为Prisma过滤用对象数组?

实现方法

要完成这个转换,核心思路就是遍历原对象的每个字段,把逗号分隔的字符串拆分成单个值,再逐个生成符合要求的过滤对象。用JavaScript可以这样实现:

基础实现代码

const queryObj = { 
  color: 'red,white',
  size: 'xl', 
  manufacturer: 'adidas,nike' 
};

const filterList = Object.entries(queryObj).flatMap(([filter, values]) => {
  return values.split(',').map(value => ({ filter, value }));
});

console.log(filterList);
// 输出结果:
// [
//   {filter: "color", value: "red"},
//   {filter: "color", value: "white"}, 
//   {filter: "size", value: "xl"},
//   {filter: "manufacturer", value: "adidas"},
//   {filter: "manufacturer", value: "nike"},
// ]

逻辑说明

  • Object.entries(queryObj):把原对象转换为键值对数组,格式类似[['color', 'red,white'], ['size', 'xl'], ...]
  • flatMap:遍历每个键值对的同时,自动扁平化后续生成的子数组,避免出现嵌套数组结构
  • values.split(','):将每个字段的逗号分隔字符串拆分为单个值的数组,比如'red,white'会变成['red', 'white']
  • map:把拆分后的每个值转换成{filter: 字段名, value: 单个值}的目标结构

优化版(处理值内空格)

如果后端返回的字符串可能包含多余空格(比如'adidas, nike'),可以给每个值加上trim()处理,确保值的格式干净:

const filterList = Object.entries(queryObj).flatMap(([filter, values]) => {
  return values.split(',').map(value => ({ filter, value: value.trim() }));
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:10:17