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

如何将动态Object转换为指定格式的Object数组?

Convert Dynamic Object to Structured Filter Array

我来帮你搞定这个动态对象转结构化数组的需求!根据你给出的输入输出示例和规则,这里有一个完全适配的JavaScript实现方案:

核心实现函数

function convertFilterObject(inputObj) {
  const filterEntries = [];

  // 遍历输入对象的所有键值对,适配任意动态结构
  for (const [field, value] of Object.entries(inputObj)) {
    // 跳过空值和Infinity这类无效数据
    if (value === "" || value === Infinity) {
      continue;
    }

    // 处理数组类型的字段:每个元素单独生成一个过滤条目
    if (Array.isArray(value)) {
      value.forEach(item => {
        filterEntries.push({
          field,
          value: item,
          operator: "equal"
        });
      });
    } else {
      // 非数组类型直接生成单个过滤条目
      filterEntries.push({
        field,
        value,
        operator: "equal"
      });
    }
  }

  return filterEntries;
}

关键特性说明

  • 动态适配输入:使用Object.entries()遍历对象,不管输入对象有多少字段都能处理
  • 无效值过滤:自动跳过空字符串""和Infinity,只保留有效数据
  • 数组字段拆分:像_groups这种数组类型的字段,会把每个元素单独转换成一条过滤规则,完全匹配你给出的示例输出
  • 统一结构输出:所有有效数据都会转换成{field, value, operator}的格式,operator固定为"equal"

测试示例

用你提供的输入对象测试:

const input = {
  _groups: ["d1830f7c-12ac-4abf-bc03-f0b70e26f8f2", "d0348b51-dcaa-2227-f0ff-912b27100aee"],
  _eror: "",
  number: "",
  seen_days: Infinity,
  address: "",
  status: "ACTIVE"
};

console.log(convertFilterObject(input));

输出结果和你预期的完全一致:

[
  { "field": "_groups", "value": "d1830f7c-12ac-4abf-bc03-f0b70e26f8f2", "operator": "equal" },
  { "field": "_groups", "value": "d0348b51-dcaa-2227-f0ff-912b27100aee", "operator": "equal" },
  { "field": "status", "value": "ACTIVE", "operator": "equal" }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:52:39