我有一个阵列说
['(','C','1','2',')']
现在我想修剪从indexOf('C') + 2
开始的数组中的数据,如果它是一个数字我需要从数组中删除..所以对于上面的例子,最终数组必须是
['(','C','1',')']
例如,如果我有['(','C','1','2','3','*',')']
,我希望将其修剪为['(','C','1','*',')']
,After element' C'只允许一个数字。
我知道我可以通过获取indexOf(' C')然后检查每个元素的数字来遍历数组..但帮助我一些有效和更好的方法。比如使用拼接或其他东西。
答案 0 :(得分:3)
如果您想要“修剪”的位置已知,您可以在此使用filter
,例如。:
var a = ['(','C','1','2','3','*',')']
.filter( function(a){
this.x += 1;
return this.x<=2 ? a : isNaN(+a);}, {x:-1}
);
这可能导致此Array
扩展名:
Array.prototype.trimNumbersFrom = function(n){
return this.filter( function(a){
this.x += 1;
return this.x<=n ? a : isNaN(+a);
}, {x:-1}
);
};
//=> usage
var a = ['(','C','1','2','3','*',')'].trimNumbersFrom(2);
//=> ["(", "C", "1", "*", ")"]
答案 1 :(得分:2)
var a = ['(','C', 'a', '8','2',')'].join("").split("C");
var nPos = a[1].search(/[0-9]/g);
var firstNumber = a[1][nPos];
var b = a[1].split(n);
// rebuild
a = a[0] + "C" + b[0] + firstNumber + b[1].replace(/[0-9]/g, "");
未经过彻底测试,但对您的情况有效。
答案 2 :(得分:1)
您可以使用isNaN()函数,如果有效数字则返回false,如果不是数字则返回true
var str = ['(','C','1','2','3','4','*',')']; // Your Input
var temp = [],count = 0;
for(var i=0;i<str.length;i++)
{
if(i<str.indexOf('C') + 2)
{
temp[count] = str[i];
count++;
}
else
{
if(isNaN(str[i]) == true)
{
temp[count] = str[i];
count++;
}
}
}
str = temp;
alert(str);