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

JavaScript部件编号匹配逻辑中供应商值输出异常问题求助

问题:修改代码后partSupplier值为空,console.log输出异常

初始可正常运行的代码

var siteList = {};
var siteInfo = [];
var part_str = '[{"part":"00000PD","partSupplier":"DELL"}]';
var part =  part_str.substring(1,part_str.length-1);

eval('var partobj='+part );
console.log(partobj.part);
console.log(partobj.partSupplier);

需求说明

判断部件编号是否匹配指定值:

  • 匹配则保留原供应商信息
  • 不匹配则将供应商设为“HP”
  • 最终将信息存入JSON结构

原正常逻辑代码

if (partobj.part.includes("00000PD")){
  var partSupp= partobj.partSupplier;
} else {
  partSupp= "HP";
}

siteInfo = {
  "Parts_Num": part,
  "partSupplier": partSupp
}
siteList.siteInfo.push(siteInfo);

出问题的修改代码

修改后代码运行后,partSupplier值为空,console.log未返回正确结果:

if (partobj.part.includes("00000PD")){
  var  partSupp = [partobj.partSupplier];
  console.log('partSupp' || partSupp);
} else {
  partSupp = "HP";
}

控制台输出结果

partSupp
It does not return any value.

问题原因及修复方案

问题1:console.log逻辑错误

console.log('partSupp' || partSupp)中,字符串'partSupp'是真值,逻辑或||会直接返回第一个真值,因此只会打印字符串partSupp,不会输出变量的实际值。

问题2:变量类型不一致

匹配分支里把partSupp设为数组[partobj.partSupplier],不匹配分支却是字符串"HP",类型不一致会导致后续存入JSON时出现异常,也是partSupplier值为空的原因之一。

修复后的代码

if (partobj.part.includes("00000PD")){
  var partSupp = partobj.partSupplier; // 保持字符串类型,和不匹配分支统一
  console.log('partSupp:', partSupp); // 正确打印变量值
} else {
  partSupp = "HP";
}

// 存入JSON的逻辑,注意先初始化siteList.siteInfo为数组,避免push报错
siteInfo = {
  "Parts_Num": part,
  "partSupplier": partSupp
}
siteList.siteInfo = siteList.siteInfo || [];
siteList.siteInfo.push(siteInfo);

额外优化:替换eval提升安全性

eval存在安全风险,建议用JSON.parse解析字符串:

// 替换原eval部分的代码
var part_arr = JSON.parse(part_str);
var partobj = part_arr[0]; // 原字符串是数组格式,取第一个元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:34:53