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

如何将数组中IMF字段从整数转为字符串以实现正常搜索?

解决IMF字段搜索报错:仅转换数组对象的IMF字段为字符串

核心问题原因

搜索时报错是因为整数类型没有match方法,手动将imf改为字符串后能正常搜索,但JSON.stringify(jsonData)会把整个数组转为JSON字符串,导致后续无法直接访问对象属性,出现未定义问题。下面提供两种解决方案:


方案一:批量转换IMF字段为字符串

可选择修改原数组,或生成新数组(不破坏原数据):

1. 修改原数组(直接遍历更新)

使用forEach遍历数组,将每个对象的imf字段转为字符串:

// 遍历数组,转换imf为字符串
jsonData.forEach(item => {
  // 仅当imf是数字时转换,避免重复操作
  if (typeof item.imf === 'number') {
    item.imf = item.imf.toString();
  }
});

2. 生成新数组(保留原数据)

使用map创建新数组,复制原对象的所有字段并仅修改imf类型:

// 生成新数组,不修改原数据
const convertedData = jsonData.map(item => ({
  ...item, // 复制原对象的其他字段
  imf: typeof item.imf === 'number' ? item.imf.toString() : item.imf
}));

// 后续搜索使用convertedData即可
printData(convertedData);

方案二:不修改数据,优化搜索逻辑

无需转换字段类型,只需在搜索时将imf临时转为字符串再执行匹配:

// 不区分大小写搜索
function search(ev) {
  var key = ev.target.value;
  codesEl.innerText = null;
  
  printData(jsonData.filter(data => {
    var regex = new RegExp(key, "i");
    // 将数字类型的imf转为字符串后再匹配
    return data.imf.toString().match(regex) 
      || data.description.match(regex) 
      || data.group.match(regex) 
      || data.vendor.match(regex) 
      || data.vsn.match(regex);
  }));
}

完整可运行代码(已优化+中文注释)

JavaScript 代码

var codesEl;
var jsonData = [
 {
            "imf": 6546,
            "description": "DEXTROSE-5%-INJ-250ML",
            "group": "C4PV",
            "vendor": "MEDLINE INDUSTRIES, INC. MSPV-NG",
            "vsn": "BHL2B0062QH"
        },
        {
            "imf": 6546,
            "description": "GLYCINE-1.5%-IRR-3000ML",
            "group": "A4PV",
            "vendor": "MEDLINE INDUSTRIES, INC. MSPV-NG",
            "vsn": "BHL2B7317"
        },
        {
            "imf": 6546,
            "description": "SET,GRAVITY,10 DROPS/ML",
            "group": "A4PV",
            "vendor": "MEDLINE INDUSTRIES, INC. MSPV-NG",
            "vsn": "IME42493EH"
        },
   {
            "imf": 465465,
            "description": "DEXTROSE-5%-INJ-250ML",
            "group": "C4PV",
            "vendor": "MEDLINE INDUSTRIES, INC. MSPV-NG",
            "vsn": "BHL2B0062QH"
        },
        {
            "imf": 1546,
            "description": "GLYCINE-1.5%-IRR-3000ML",
            "group": "A4PV",
            "vendor": "MEDLINE INDUSTRIES, INC. MSPV-NG",
            "vsn": "BHL2B7317"
        },
        {
            "imf": 2654,
            "description": "SET,GRAVITY,10 DROPS/ML",
            "group": "A4PV",
            "vendor": "MEDLINE INDUSTRIES, INC. MSPV-NG",
            "vsn": "IME42493EH"
        }
];

// 将数据打印到页面
function printData(Arr) {
  for(var i=0; i<Arr.length; i++) {
    codesEl.innerText += `\n IMF: ${Arr[i].imf} 描述: ${Arr[i].description} 分组: ${Arr[i].group} 供应商: ${Arr[i].vendor} 库存编号: ${Arr[i].vsn}`;
  }
}

// 不区分大小写搜索(优化版)
function search(ev) {
  var key = ev.target.value;
  codesEl.innerText = null;
  
  printData(jsonData.filter(data => {
    var regex = new RegExp(key, "i");
    // 临时转换imf为字符串,避免数字类型无match方法报错
    return data.imf.toString().match(regex) 
      || data.description.match(regex) 
      || data.group.match(regex) 
      || data.vendor.match(regex) 
      || data.vsn.match(regex);
  }));
}

window.onload = function() {
  codesEl = document.getElementById("codes");
  printData(jsonData);
}

HTML 代码

<input type="text" onkeyup="search(event)" placeholder="输入关键词搜索" />
<div>
  <span id="codes"></span>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:15:34