Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中剥离数组元素中的非整数_Javascript_Arrays_Methods_Replace - Fatal编程技术网

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

如何在JavaScript中剥离数组元素中的非整数,javascript,arrays,methods,replace,Javascript,Arrays,Methods,Replace,我对编程很陌生,我觉得以前也有人问过类似的问题。但我试着运用它们,我知道我缺少一些基本的东西 给定一个数组: var myArray = [24.203, 12*45, 000-1, 4567+00]; 我想去掉所有的非整数,所以我有这样的东西: var myArray = [24203, 1245, 0001, 456700]; 我知道.replace方法,但我似乎无法让它工作。以下是我尝试过的四件事: function stripNonIntegers(arr) { var x;

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

给定一个数组:

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);
函数条带非整数(arr){
var x;
this.myArray=myArray;
对于(x=0;x<10;x++){
myArray[x]=myArray[x]。替换(/\D/g');
} }
剥离非整数(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, '');
    } }
    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, '');
} }
varx;(myArray);{//我不喜欢分号,但如果省略它们,我会出错
对于(x=0;x<10;x++)
{myArray[x]=myArray[x]。替换(/\D/g',);
} }
这将返回一个错误,说明x未定义

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, '');
    } }
    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, '');
} }
stripNonIntegers=函数(arr){
对于(x=0;x
\D
是一个与所有非数字匹配的速记字符类

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

\D
是一个与所有非数字匹配的速记字符类


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

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

var myArray = ['24.203', '12*45', '000-1', '4567+00'];
然后,您可以
映射到阵列上,并使用
替换
调用:

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);
});

当然,如果您更喜欢使用正则
进行
循环,您可以使用这些循环来完成所有这一切。但是,我认为使用
map
看起来更干净一些。如果您不熟悉map,请查看您正确使用了正则表达式,并且正确使用了
replace
。您的问题可能是数组中的项不正确您给出的代码中的字符串。只需将每个字符串用引号括起来,使其成为字符串:

var myArray = ['24.203', '12*45', '000-1', '4567+00'];
然后,您可以
映射到阵列上,并使用
替换
调用:

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);
});

当然,如果您喜欢使用常规的
进行
循环,您可以使用这些循环来完成所有这些操作。但是,我认为使用
map
看起来更干净一些。如果您不熟悉map,请查看您的数组在初始化后由以下数字(而不是字符串)组成:[24.203540,-14567]。此外,您正在引用myArray,但签名头需要“arr”。这里的问题之一是,数组中的值实际上看起来不是字符串,而是算术运算的结果,这可能会导致它们的结果存储在数组中,而不是表达式本身。
[24.2035404567]
。您是否有其他与如何构建这些表达式相关的代码?如果它们是“硬编码的”像这样,您可能没有太多的灵活性。这是一个个人项目,我正在练习,我的程序的其余部分都使用字符串和整数作为数组元素。我将它们用引号括起来(将它们转换为字符串)但这似乎并没有影响任何结果。尽管我承认我尝试了很多事情,但很难准确跟踪……初始化后,您的数组由以下数字(而不是字符串)组成:[24.203540,-14567]。此外,您引用的是myArray,但签名头要求“arr”。这里的一个问题是,数组中的值实际上看起来不是字符串,而是算术运算的结果,这可能会导致它们的结果存储在数组中,而不是表达式本身
[24.203540,4567]
。您是否有其他与如何构建这些表达式相关的代码?如果它们是这样“硬编码”的,您可能无法灵活地执行这些操作。这是我个人的项目,我正在进行实践,我的程序的其余部分都使用字符串和整数作为数组元素。我将它们放在引号中(将它们转换为字符串)但这似乎没有影响任何结果。尽管我承认我已经尝试了很多事情,很难准确跟踪…您可能应该建议使用字符串
var myArray=['24.203','12*45','000-1','4567+00'声明数组];
我同意。更新了答案。@andrew burgess的答案更详细一些,但也是一样。这很有效,谢谢!顺便问一句,parseInt后的“10”有什么作用?没有它似乎也可以。别忘了接受答案:)至于“10”,请查看parseInt文档。简言之,它是基数参数(数学数字系统中的基数)。由于不同的浏览器有不同的实现方式,因此最好包含此项。通常,默认值为10,这与我们的正常十进制系统相对应。您可能建议使用字符串
var myArray=['24.203','12*45','000-1','4567+00'声明数组;
我同意。更新了答案。@andrew burgess的答案更详细一些,但也是一样。这很有效,谢谢!顺便问一句,parseInt后的“10”有什么作用?没有它似乎也可以。别忘了接受答案:)至于“10”,请查看parseInt文档。简言之,它是基数参数(数学数字系统中的基数)。因为不同的浏览器有不同的实现,所以最好包含这个。通常,默认值是10,这与我们的正常十进制系统相对应。我尝试了这个,但它仍然说x是未定义的。然后放一个'