【问题标题】:Compare user input with csv file, return second column value javascript将用户输入与 csv 文件进行比较,返回第二列值 javascript
【发布时间】:2022-09-22 21:11:09
【问题描述】:

我遇到了以下主题,它只有 1 行而不是 2 列。 如何在此处返回第二个值(请参阅下面的主题) Compare my variable with a csv file and get the matching value in javascript

这是我的 CSV 文件值:

列的csv屏幕截图

这是我目前拥有的 IT 只是从用户那里检查文件中的序列号并用文本“有效”标记 div。 此 Valid 应具有第二个 Columns 值。

<script>
    const checkm = document.getElementById(\'check\');
    checkm.addEventListener(\'click\', serialChecker)
    async function serialChecker(){
        const url = \'http://localhost/validator/serials.csv\';
        const response = await fetch(url);
        // wait for the request to be completed
        const serialdata = await response.text();
        console.log(serialdata);
        const inputserialnumber = document.getElementById(\'serialnumber\').value.toString();
        console.log(inputserialnumber);
        // serialdata.match(/inputserialnumber/)
        // serialdata.includes(inputserialnumber)
        if(serialdata.includes(inputserialnumber) == true && inputserialnumber.length == 7 ){
            document.getElementById(\'validity\').innerHTML = \"Valid\";
            startConfetti(); // from confetti.js
        }else {
            document.getElementById(\'validity\').innerHTML = \"Invalid\";
            stopConfetti(); // from confetti.js
        }


        //document.getElementById(\'test\').innerHTML = \"Valid\";
    }


</script>

This is my console output 它显示了完整的 csv(当前)和用户输入

如果有帮助,将 csv 数据更改为不同的数组: array

& 提前感谢大家花时间回答我的愚蠢问题!

额外说明:

我试图做的是一个验证网站检查器。 所以用户通过一个简单的输入字段输入他们的序列号。 &我在 csv 文件中有连续剧,其中有一个名称与连续剧匹配的额外列。 因此,如果用户输入 1234567 它存在于 CSV 文件中,则我当前的代码为此返回 value = true。因为它存在于 CSV 文件中。

但我希望它返回 1234567 旁边的值(所以在第二列中),在本例中为 \"test1\"。因此,我可以使用该值而不是仅将标准“有效”文本推回网站。

  • 请包括console.log(serialdata); 的输出
  • 您的意思是简单地从带有 csv 数据的输出数组中获取第二个值吗?
  • 在您的 if 语句中,您使用了单与号运算符 &amp;
  • @paddotk 就像一个简单的匹配,用户输入 1234567,如果存在则检查第一列。在其他列中返回值。本案例测试1
  • @GrafiCode 添加了一个屏幕截图,但我只是推送了我正在获取的完整 csv 和用户的输入。抱歉,我的 if 语句使用单个 & 符号是什么意思?

标签: javascript csv


【解决方案1】:

您可以通过索引匹配两个数组的值。在您的情况下,我认为最简单的方法是使用 Array.map() 根据您循环通过的数组返回一个转换后的数组。例如,如果您有两个名为 namesArrayvaluesArray 的数组,请执行以下操作:

const validationResults = valuesArray.map((value, index) => {
  return {
    valid: checkValidity(value), // or whatever your validation function is called
    name: namesArray[index] // match the index of the namesArray with the index of this one (valuesArray)
  };
  // or `return namesArray[index] + ', valid: ' + checkValidity(value)`
});

这循环通过valuesArray,然后validationResults 将成为您在上面的map 函数中为每个项目返回的内容的数组。

一个重要的注意事项是,这假设数组的顺序相同。例如,如果要对它们进行排序,请执行此操作这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    相关资源
    最近更新 更多