簡體   English   中英

在JS中修剪數組

[英]trim Array in JS

我有一個數組說

['(','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<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);

現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM