我有一个数组:
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;
答案 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+/,""));
}
对于阵列来说,......可能会快一点点。
答案 4 :(得分:0)
var array = ["1AB", "AB2", "A3B"];
array = array.map(function(val) { return val.replace(/\d*/g, "");});