javascript - 通过循环读取和插入数据到数组

标签 javascript arrays for-loop

我正在尝试从文本区域读取 CSV 数据,然后根据条件(如果它们通过或不通过)将它们推送到两个不同的数组中。我很挣扎,我明白为什么我的代码多次插入数据(因为我的 for 循环,虽然我不知道如何解决)但我不明白为什么它将它们插入成功和失败的数组中。这是我到目前为止尝试过的 - 必须是纯 javascript - 请原谅我的命名不是很好的 atm:

var addValue = document.getElementById('example').value;
filter = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
  num = /0{2,}|1{2,}|2{2,}|3{2,}|4{2,}|5{2,}/,
  cur = new Date(),
  abbr = ["PA", "CT", "NJ", "MA", "IL", "ID", "OR"],
  successArray = [];
failedArray = [];


if (addValue != "") {
  var CSVvalue = addValue.split(',');
  information.push(CSVvalue);
  for (var i = 0; i <= information.length - 1; i++) {
    for (var j = 0; j <= abbr.length - 1; j++) {
      var email = information[i][3],
        birthdate = new Date(information[i][2]),
        zipCode = information[i][5],
        diff = cur - birthdate,
        age = Math.floor(diff / 31536000000),
        state = information[i][4];


      if ((filter.test(email)) && (!num.test(zipCode)) && (age > 21) && ((state != abbr[j]))) {
        var lastSuccessArray = [];
        successArray.push(information);
        lastSuccessArray.push(successArray.slice(0));

      } else {
        var lastFailArray = [];
        failedArray.push(information);
        lastFailArray.push(failedArray.slice(0));
      }
    }
  }
} else {
  alert("You must enter a value");
}

最佳答案

就在推送到成功数组检查之前

if ( failedArray.indexOf( information[i] ) == -1 )
 {
    successArray.push(information[i]);
 } 

对于失败的数组反之亦然

 if ( successArray.indexOf( information[i] ) == -1 )
 {
    failedArray.push(information[i]);
 } 

您的代码显然可以优化,但对于您的代码,我们需要了解有关您的数组和逻辑的更多详细信息。

关于javascript - 通过循环读取和插入数据到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35362321/

相关文章:

javascript - 使用 devtool 保存 Har 文件的 Chrome 扩展

javascript - React 组件渲染函数中 this.state 未定义

javascript - 传单矩形立即消失

python - 在循环中创建变量并在 Python 中初始化它们

arrays - Delphi XE6,带有 boolean 成员字段的记录的3D数组,不会建立

python - 关于 np.tile 和 numpy 广播的困惑

c中for循环的条件

c# - 调整 jsonSerializer 时区

c - 为什么我无法初始化指针变量并且无法使用gets?

java - Android 在循环中移动图像