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

Node.js中includes方法为何需匹配完整字符串?

问题原因与解决方案

核心问题

你用csv-parse解析文本文件后,回调里的row是数组类型,而非字符串。比如文件中19180 - Testing这一行,会被解析成['19180 - Testing'](因为你的分隔符是逗号,但行内没有逗号,所以整个行作为数组的唯一元素)。此时调用row.includes(serialmodel),实际是检查数组中是否存在完全等于19180的元素,自然匹配不到,只有当serialmodel和数组元素完全一致时才会生效。

修复代码

把数组转换成字符串后再调用includes,直接取数组的第一个元素(因为每行只有一个内容)即可:

function PopulateModelList() {
    const fs = require("fs");
    const { parse } = require("csv-parse");

    var modellist = document.getElementById('model');
    var serial = document.getElementById("serialnumberinput").value;
    var serialmodel = serial.substring(0,5);

    var testing = document.getElementById("modeltesting");
    testing.innerHTML += serialmodel;

    // 清空之前的选项,避免重复添加
    modellist.innerHTML = '<option value="" selected="selected" >Select Model</option>';

    fs.createReadStream("./model.txt")
    .pipe(parse({
        delimiter: ",",
        from_line: 1,
    }))

    .on("data", function(row) {
        console.log(row);
        // 取数组第一个元素转换成字符串,再检查是否包含serialmodel
        const modelStr = row[0];
        if (modelStr.includes(serialmodel)) {
            modellist.innerHTML += '<option value="' + modelStr + '">' + modelStr + '</option>' ;
        }
    })
}

额外优化建议

  • 每次执行PopulateModelList时,先清空下拉框的原有选项(上面代码已添加),避免多次点击提交后重复添加相同选项。
  • 如果你的model.txt每行是纯文本(没有逗号分隔),其实可以不用csv-parse,直接用fs.readFile按行读取,代码会更简洁:
function PopulateModelList() {
    const fs = require("fs");
    var modellist = document.getElementById('model');
    var serial = document.getElementById("serialnumberinput").value;
    var serialmodel = serial.substring(0,5);
    var testing = document.getElementById("modeltesting");
    testing.innerHTML += serialmodel;

    modellist.innerHTML = '<option value="" selected="selected" >Select Model</option>';

    fs.readFile("./model.txt", "utf8", (err, data) => {
        if (err) throw err;
        const lines = data.split("\n");
        lines.forEach(line => {
            if (line.trim() && line.includes(serialmodel)) { // 跳过空行
                modellist.innerHTML += '<option value="' + line + '">' + line + '</option>' ;
            }
        });
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:42:36