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

JS多数组动态关联与过滤的实现需求

前端复杂数据处理方案

输入数据

三个JavaScript数组如下,其中Values数组的布尔值每5秒会动态切换:

Config数组

存储各rdd对应的配置项开关:

var Config = [{
    "rdd": "Transducer Failure",
    "performance": true,
    "agc": false,
    "snr": true,
    "sos": false,
    "flowvel": true
  },
  {
    "rdd": "Detection Problem",
    "performance": false,
    "agc": true,
    "snr": false,
    "sos": true,
    "flowvel": false
  }
]

Instance数组

包含不同实例(如U、Y)的配置项映射值:

var Instance = [{
  "U": [{
    "performance": "abc",
    "agc": "xyz",
    "snr": "pqr",
    "sos": "vns",
    "flowvel": "mns"
  }],
  "Y": [{
    "performance": "a",
    "agc": "b",
    "snr": "c",
    "sos": "d",
    "flowvel": "e"
  }]
}]

Values数组

存储映射值对应的布尔状态,每5秒动态更新:

var Values = [{
  "abc": true,
  "xyz": false,
  "pqr": true,
  "vns": false,
  "mns": true,
  "a": true,
  "b": false,
  "c": false,
  "d": true,
  "e": true
}]

需求说明

生成满足以下条件的新对象数组:

  • 若Config中某配置项值为true,则先映射到Instance对应实例的取值,再获取Values中该取值的布尔值;若Config中值为false,则返回"NA"
  • 最终结果按实例分组,每个实例下包含对应各rdd的配置项状态或NA

期望输出:

result = [{
  "U": [{
      "rdd": "Transducer Failure",
      "performance": true,
      "agc": "NA",
      "snr": true,
      "sos": "NA",
      "flowvel": true
    },
    {
      "rdd": "Detection Problem",
      "performance": "NA",
      "agc": false,
      "snr": "NA",
      "sos": false,
      "flowvel": "NA"
    }
  ],
  "Y": [{
      "rdd": "Transducer Failure",
      "performance": true,
      "agc": "NA",
      "snr": false,
      "sos": "NA",
      "flowvel": true
    },
    {
      "rdd": "Detection Problem",
      "performance": "NA",
      "agc": false,
      "snr": "NA",
      "sos": true,
      "flowvel": "NA"
    }
  ]
}]

实现代码

function generateResult() {
  const instanceMap = Instance[0];
  const valueMap = Values[0];
  
  const result = {};
  
  Object.keys(instanceMap).forEach(instanceKey => {
    const instanceConfig = instanceMap[instanceKey][0];
    result[instanceKey] = Config.map(rddItem => {
      const rddResult = { rdd: rddItem.rdd };
      Object.keys(rddItem).forEach(key => {
        if (key === 'rdd') return;
        rddResult[key] = rddItem[key] ? valueMap[instanceConfig[key]] : "NA";
      });
      return rddResult;
    });
  });
  
  return [result];
}

// 首次生成结果
let currentResult = generateResult();
console.log(currentResult);

动态更新处理

适配Values每5秒的状态切换,定时重新生成结果:

// 每5秒更新一次结果
setInterval(() => {
  currentResult = generateResult();
  // 此处可添加UI更新逻辑,比如渲染最新结果
  console.log('Updated Result:', currentResult);
}, 5000);

代码说明

  1. 先从Instance和Values中提取实际映射对象(两者均为数组包裹的单个对象)
  2. 遍历每个实例(U、Y),为每个实例生成对应的rdd结果列表
  3. 对每个rdd项,遍历配置字段:
    • 开关为true时,通过Instance的映射值获取Values中的布尔状态
    • 开关为false时,直接赋值"NA"
  4. 将结果包裹成数组,匹配期望输出格式
  5. 使用setInterval实现每5秒重新计算结果,适配Values的动态变化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:25:30