如何在JavaScript中剥离数组元素中的非整数

How to strip non integers in array elements in JavaScript

本文关键字:整数 数组元素 剥离 JavaScript      更新时间:2023-09-26

我对编程很陌生,我觉得以前也有人问过类似的问题。但我试着应用了它们,我知道我错过了一些基本的东西。

给定一个数组:

var myArray = [24.203, 12*45, 000-1, 4567+00];

我想去掉所有的非整数,这样我就有了这样的东西:

var myArray = [24203, 1245, 0001, 456700];

我知道.replace方法,但我似乎无法使它起作用。以下是我尝试过的四件事:

function stripNonIntegers(arr) {
    var x;
    this.myArray = myArray;
for(x = 0; x < 10; x++) {
    myArray[x] = myArray[x].replace(/'D/g, '');
} }
stripNonIntegers(myArray);

这会返回一个错误,说明myArray未定义。

var x;(myArray); { //I don't like the semicolons but I get an error if I omit them
for(x = 0; x < 10; x++)
    {myArray[x] = myArray[x].replace(/'D/g, '');
    } }

这会返回一个错误,表示x未定义。

    stripNonIntegers= function(arr) {
        for (x =0; x<this.length; x++)
    myArray.replace(/'D/g,'');};
stripNonIntegers(myArray);

此输出未定义。

var stripNonIntegers= myArray[x]; {
    for (x=0; x<myArray.length; x++) {
stripNonIntegers = myArray.replace(/[^'d]/g, '');
} }

这个还说x是未定义的。这篇文章解释了如何使用正则表达式为/D的.replace方法从字符串中去除非数字,但我似乎无法将其用于数组(而不是函数)。因此,我尝试在其中插入一个"for"循环,以便它将每个元素视为自己的字符串。我知道我犯了一个愚蠢的错误,但尽管我尽力了,我还是认不出来。我在黑暗中开枪。

有什么建议吗?提前谢谢。

var myArray = ['24.203', '12*45', '000-1', '4567+00'];
var myNewArray = myArray.map(function(value) {
    return parseInt(value.replace(/'D/g, ''), 10);
});

'D是一个与所有非数字匹配的简写字符类。

当数组元素是字符串时,上面的代码可以工作。

您正确使用了正则表达式,并且正确使用了replace。您的问题可能是数组中的项不是您给出的代码中的字符串。只需将每一个都用引号括起来,使其成为字符串:

var myArray = ['24.203', '12*45', '000-1', '4567+00'];

然后,您可以通过阵列map并使用replace调用:

var newArray = myArray.map(function (item) {
    return item.replace(/'D/g, '');
});

结果是:

["24203", "1245", "0001", "456700"]

不过,这些仍然是字符串。要将它们转换为数字,可以使用parseInt:

var intArray = newArray.map(function (item) {
    return parseInt(item, 10);
});

如果你愿意,你可以一步完成所有这些:

var newIntArray = myArray.map(function (item) {
    return parseInt(x.replace(/'D/g, ''), 10);
});

当然,如果您喜欢常规的for循环,您可以使用这些循环来完成所有这些操作。然而,我认为使用map看起来更干净一些。如果您不熟悉map,请查看阵列map函数的MDN文档