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
现场演示