取数组并将奇数和偶数推入单独的数组中

时间:2013-11-25 23:36:26

标签: javascript arrays

我有一个数组,其中包含一个字母/两个数字格式的元素,需要将原始数组中的元素分成奇数和偶数两个数组,并保持原始数组的完整性。我在这里看了很多其他问题,但似乎都没有。

我一直在查看一些javascript代码,当数组元素只是数字时可以工作,但它不适用于添加的前导字母。这是代码:

var h = [06, 03, 02, 13, 04, 05, 12, 07, 09, 01, 11, 22];

e = [];

for (var i = 0; i < h.length; ++i) {
    if ((h[i] % 2) == 0) {
        e.push(h[i]);
    }
}
alert(e);

o = [];

for (var i = 0; i < h.length; ++i) {
    if ((h[i] % 2) == 1) {
        o.push(h[i]);
    }
}

alert(o);

这样可以正常工作(即使它如果为零也会丢弃前导数字),但现在如果数组更改为

var h = [B09,O67,I21,B04,B13,N34,N43,O74,O75,I26];

上面的代码不适用于新数组。我认为我需要通过仅查看每个元素的最后一个数字来过滤掉赔率和平均值,但我无法弄清楚如何这样做。数组元素都是相同的三个字符格式,一个字母后跟两个数字,并且必须在新数组中保留相同的格式。

感谢所有人的指导和感恩节快乐,

...斯坦

2 个答案:

答案 0 :(得分:4)

而不是:

h[i] % 2

你可以这样做:

parseInt(h[i].substring(1)) % 2

假设你忘记了示例数组中的引号,它应该是:

var h = ["B09","O67","I21","B04","B13","N34","N43","O74","O75","I26"];

答案 1 :(得分:2)

我不会复制已经说过的内容,但我会补充一点,你应该将2个循环合并为一个:

e = [];
o = [];

for (var i = 0; i < h.length; ++i) {
    if (/* h[i] is even */) {
        e.push(h[i]);
    } else {
        o.push(h[i]);
    }
}

alert(e);
alert(o);