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

Node.js中如何完整输出JSON数组所有buyer_sku_code?

问题分析

你的代码仅打印第一个buyer_sku_code就终止,核心原因是循环内部的else分支使用了return语句。return会直接跳出整个readFile的回调函数,导致循环只执行一次就停止,后续数组元素完全没机会被处理:

  • 如果第一个元素的buyer_sku_code不等于kod,会直接执行return conn.reply(...),函数直接结束;
  • 就算第一个元素匹配,后续元素不匹配时,依然会触发return中断循环。
修复方案

需要把「打印所有sku」和「查找匹配kod并回复」的逻辑拆分,不在循环内用return提前终止函数。以下是两种可行的修改方式:

方案一:用forEach遍历打印,用some判断匹配

fs.readFile('./custom-raeonn/digiflazz/prepaidData.json', 'utf8', function (err, data) {
  // 新增文件读取错误处理
  if (err) {
    return conn.reply(m.chat, '读取数据文件失败', m);
  }
  
  try {
    data = JSON.parse(data);
  } catch (parseErr) {
    // 新增JSON解析错误处理
    return conn.reply(m.chat, '数据文件格式错误', m);
  }

  // 遍历打印所有buyer_sku_code
  data.forEach(item => {
    console.log(item.buyer_sku_code);
  });

  // 检查是否存在匹配的kod
  const isMatched = data.some(item => item.buyer_sku_code === kod);
  
  if (isMatched) {
    conn.reply(m.chat, `Passed`, m);
  } else {
    conn.reply(m.chat, `Sorry. Could not find any product code of ${kod}, Perhaps a typo?`, m);
  }
});

方案二:用for循环遍历,标记是否找到

fs.readFile('./custom-raeonn/digiflazz/prepaidData.json', 'utf8', function (err, data) {
  if (err) return conn.reply(m.chat, '读取数据文件失败', m);
  
  try {
    data = JSON.parse(data);
  } catch (e) {
    return conn.reply(m.chat, '数据文件格式错误', m);
  }

  let isFound = false;
  for (let i = 0; i < data.length; i++) {
    console.log(data[i].buyer_sku_code);
    // 找到匹配项时标记,不中断循环
    if (data[i].buyer_sku_code === kod) {
      isFound = true;
    }
  }

  // 循环结束后统一回复
  if (isFound) {
    conn.reply(m.chat, `Passed`, m);
  } else {
    conn.reply(m.chat, `Sorry. Could not find any product code of ${kod}, Perhaps a typo?`, m);
  }
});

关键修改点

  1. 移除循环内的return,确保所有数组元素都能被遍历打印;
  2. 拆分「打印逻辑」和「匹配判断逻辑」,循环结束后再统一执行回复操作;
  3. 新增文件读取、JSON解析的错误处理,提升代码健壮性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:39:54