【问题标题】:Splitting an array of letters and numbers into two separate arrays将字母和数字数组拆分为两个单独的数组
【发布时间】:2017-02-01 20:36:32
【问题描述】:

我昨天收到了一些关于这个问题的答案,但是这段代码不能完全按照我的需要工作,而且我无法在我的原始线程上用所需的几句话回复任何人。

我正在尝试从输入框中获取输入,将它们拆分,然后将它们分类为两个数组:一个用于数字,另一个用于非数字。

这是我的代码:

var splitResult = listResult.split(separator);
    var L = 0;
    letterArray = [];
    numberArray = [];
   for (; L < splitResult.length; L++) {
   if(isNaN(splitResult[L]) && typeof splitResult[L] === 'string') {
    letterArray.push(splitResult[L]);
    L = L + 1
  } else if (Number(splitResult[L])) {
    numberArray.push(splitResult[L]);
    L = L + 1;

当我检查我的数组时,我的问题就出现了。当输入混合时,我的 numberArray 看起来很完美,但绝对没有输出到 letterArray,甚至没有 undefined 或 NaN 或 0。此外,当输入仅为数字时,例如:1、2、3、4 ,5,6,7, numberArray 显示为 1,3,5,7,

如果可以的话,请告诉我出了什么问题。

【问题讨论】:

  • 你能发布字母数字输入和预期结果吗?

标签: javascript arrays loops numbers


【解决方案1】:

增量L = L + 1; 不是必需的。

由于在for 循环中,您将 L 的值递增为 L++,因此不需要对 L 进行另一个递增。

var splitResult = listResult.split(separator);

        var L = 0;
        letterArray = [];
        numberArray = [];
       for (; L < splitResult.length; L++) {
       if(isNaN(splitResult[L]) && typeof splitResult[L] === 'string') {
        letterArray.push(splitResult[L]);

      } else if (Number(splitResult[L])) {
        numberArray.push(splitResult[L]);
        }

【讨论】:

    【解决方案2】:

    我认为您在循环中添加了两次 L + 1,跳过了一些字符。

    删除

        L = L + 1;
    

    从每个 if 语句

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多