从数组中的字符串中删除数字

时间:2013-12-20 18:15:08

标签: javascript

我有一个数组:

var array = ["0CS", "0CR", "1CR", "1AR"]

我想删除每个字符串中的数字,使其变为:

["CS","CR","CR","AR"]

是否有比这更有效的方法(纯粹用JS)?

var noNumberArray = []
for(var item in array){
    noNumberArray.push(array[item].replace(/\d+/,""));
}
array = noNumberArray;

5 个答案:

答案 0 :(得分:1)

for( var i=0 ; i<array.length ; ++i ) array[i] = array[i].replace(/\d+/,'')

array // ["CS", "CR", "CR", "AR"]

答案 1 :(得分:1)

使用简单的for循环而不使用额外的数组是性能测试的(不足为奇)的赢家。

http://jsperf.com/nate-array-manipulation

for (var i = 0, ln = myArray.length; i < ln; i++) {
    myArray[i] = myArray[i].replace(/\d+/,"");
}

另外,根据我的测试,在所有情况下,直接更改属性而不是创建新数组似乎更容易(略微),但根据我的测试。

forEach是次佳的,for... in之后会出现,map的效果最差。

答案 2 :(得分:0)

试试这段代码,这可能有助于你

noNumberArray.push(array[item].replace(/[0-9]/g, ''));

答案 3 :(得分:0)

for (var i = 0, ln = array.length; i < ln; i++{
    noNumberArray.push(array[i].replace(/\d+/,""));
}
对于阵列来说,

......可能会快一点点。

参考:JavaScript for...in vs for

答案 4 :(得分:0)

var array = ["1AB", "AB2", "A3B"];
array = array.map(function(val) { return val.replace(/\d*/g, "");});