【问题标题】:Splitting an array of numbers and non-numbers into two separate arrays将数字和非数字数组拆分为两个单独的数组
【发布时间】:2017-02-01 00:33:53
【问题描述】:

我对 javascript 非常陌生,我正在尝试创建一个函数,该函数接受数字的混合输入,然后循环遍历数组,以便将它们分类为两个较新的数组,以便我可以进一步操作它们。

所以如果我有一个输入 1,a,2,b,3,c,4,d,

我想制作两个新的数组 1,2,3,4 和 a,b,c,d

到目前为止,我已经能够在逗号处拆分输入字符串,所以我现在有了

1a2b3c4d

我现在需要做的就是将数字和非数字分开。我正在考虑使用两个循环:一个检查

if(isNan.array[n] == True)

然后尝试找到一种方法使用循环将字母存储到变量中,然后使用另一个循环使用另一个 if 函数对数字执行此操作。

我应该这样做吗?你对如何去做有什么建议吗?

编辑:

我现在有这个代码来检查字母:

if (isNaN(splitResult[L])) {
        for (i = 0; i < splitResult; i++) {
            letterArray.add(splitResult[L]);
            L = L + 1

当我尝试将结果输出到一个框以计算字母时(使用变量 L),什么都没有显示。我怀疑我制作了一个新数组

【问题讨论】:

  • 为什么要循环两次?做一个if(NaN...) letterArray.add(array[i]); else numArray.add(array[i]);
  • 您应该先尝试一下....如果它没有按预期工作,请在此处提问,显示您正在使用的代码
  • 使用 arrayName.forEach(functionName) 并在 JavaScript 中的数组中添加新项目,您使用“推送”而不是“添加”,因此它将是 letterArray.push(item)。您可以在此处查看 forEach 示例:w3schools.com/jsref/jsref_forEach.asp 另外 isNan(item) 将返回一个布尔值,因此您不需要将其等同于 true 或 false 您可以简单地使用 if(isNan(item)) {}
  • '因为我对此非常陌生;我什至无法识别您建议的循环。

标签: javascript arrays loops numbers


【解决方案1】:

您需要做的就是遍历数组,您可以使用数组原型forEach。或者您可以使用普通的for 循环来检查数组的每个元素。您现在可以检查每个元素是否isNaN,然后适当地推入正确的数组。可以使用下面的sn-p

const yourArray = ['1','a','2','b','3','c','4','d'];
const letterArray = [];
const numberArray = [];
yourArray.forEach((eachItem) => {
  if(isNaN(eachItem)){
    letterArray.push(eachItem);
  } else {
    numberArray.push(eachItem);
  }
});

console.log(letterArray, numberArray);

【讨论】:

  • 非常感谢您的意见,但我不知道用什么替换您提供的代码中的“eachItem”
  • eachItem 表示数组中的每个值。如果您使用的是for 循环。你会使用yourArray[index]forEach 方法可以接受一个函数作为它的参数,并且在该函数中指定的第一个参数代表数组的每一项。检查答案中的链接以获取更多详细信息
  • 好的,使用你的例子后,我遇到了两个问题。
  • 出了什么问题?
  • 对不起,我试图编辑那个帖子,但它告诉我我的评论太长了,所以我放弃了并在论坛中提出了一个新问题。不过,感谢您回来查看;对此感到抱歉!
【解决方案2】:

为了补全,先把字符串拆分成数组:)

let yourString = '1a2b3c4d';
let yourArray = yourString.split('');
let letterArray = [];
let numberArray = [];
yourArray.forEach(item => {
  if(isNaN(item) && typeof item === 'string'){
    letterArray.push(item);
  }
  else if(!isNaN(item) {
    numberArray.push(item);
  }
});

console.log(letterArray, numberArray);

【讨论】:

  • 所以我是否首先创建一个循环,像这样遍历每个项目 for (; L
  • 不只是将 yourString 的值替换为您的“输入”字符串,如果它与 , 分隔,只需将 yourString.split('') 替换为 yourString.split(',')
  • forEach 遍历您的拆分字符串(现在是一个数组):developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 糟糕的是,我为此复制并粘贴了代码,splitResult 是我已经拆分的数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2012-04-13
相关资源
最近更新 更多