JS中的trim数组

我有一个arrays说

['(','C','1','2',')'] 

现在我想从indexOf('C') + 2开始从数组中修剪数据,如果它是一个数字我需要从数组中删除..所以对于上面的例子,最终数组必须是

  ['(','C','1',')'] 

例如,如果我有['(','C','1','2','3','*',')']我想将它修剪为['(','C','1','*',')'] ,在元素’C’之后只允许一个数字。

我知道我可以通过获取indexOf(’C’)然后检查每个元素的数字遍历数组..但帮助我一些有效和更好的方法。 喜欢使用拼接或其他东西。

如果您想要“修剪”的位置已知,则可以在此处使用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", "*", ")"] 

也可以看看 ...

 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, ""); 

没有彻底测试,但对你的情况它是有效的。

您可以使用isNaN()函数,如果它是有效数字则返回false,如果不是数字则返回true

 var str = ['(','C','1','2','3','4','*',')']; // Your Input var temp = [],count = 0; for(var i=0;i 

现场演示