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

Oracle APEX动态动作:页面项转数组键值查询报错修复

解决“find is not a function”错误的步骤

错误原因

你直接对JSON字符串调用了数组的find方法——$v('P10_PLOT_ARRAY')拿到的是页面项存储的JSON格式字符串,不是数组,自然没有find方法。另外你的原始JSON格式存在语法问题:value键没有用双引号包裹,这会导致后续JSON.parse解析失败。

修正步骤

1. 先修复页面项的JSON格式

确保P10_PLOT_ARRAY的JSON是标准格式,所有键名和字符串值都用双引号包裹:

P10_PLOT_ARRAY := '{"plots":[{"name":"Days on market Sydney (SUA) Houses", "value":"Bar" }, {"name":"Typical value Brisbane (SUA) Houses", "value":"Bar" }, {"name":"Typical value Melbourne (SUA) Houses", "value":"Line" }]}';

2. 修改JavaScript代码

解析JSON字符串为对象,取出plots数组后再使用find方法:

// 获取页面项的JSON字符串
let jsonStr = $v('P10_PLOT_ARRAY');
// 解析为可操作的JavaScript对象
let plotData = JSON.parse(jsonStr);
// 从对象中取出目标数组
let plotsArray = plotData.plots;

// 查找匹配的项
let targetPlot = plotsArray.find(function(item) {
  return item.name === "Typical value Melbourne (SUA) Houses";
});

// 处理查找结果
if (targetPlot) {
  apex.message.alert('value: ' + targetPlot.value); // 预期弹出"Line"
} else {
  apex.message.alert('未找到匹配的项');
}

额外注意事项

  • 必须通过JSON.parse()把字符串转成JavaScript对象,才能访问内部的plots数组
  • 标准JSON要求所有键名(比如name、value)和字符串值都必须用双引号,单引号或无引号都会导致解析失败
  • 可以增加数组校验,避免意外错误:
    if (Array.isArray(plotsArray)) {
      // 执行find逻辑
    } else {
      apex.message.alert('数据格式错误:plots不是数组');
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:15:05