2012-06-25 45 views
0

我知道如何在PHP中做到這一點,但我正在研究一個JavaScript數組,它給了我很多麻煩。在數組中的一組標識符中組合2個值

我將永遠成立一個這樣的數組:

array[0] => Keyword 
array[1] => String 1 
array[2] => String 2 
array[3] => String 3 
array[4] => Keyword 
array[5] => String 4 
array[6] => String 5 
array[7] => Keyword 

現在,這可以持續一段時間,所以我的問題是如何能夠自動解析這個陣列,使其不再包含關鍵字並將關鍵字中的值組合在一起,即:字符串1 + 2 + 3是1整個字符串,字符串4 + 5是整個字符串。

+0

你將如何做到這一點在PHP?這可能非常相似... –

+0

@Honzo你可以舉一個輸出數組的例子嗎? – VisioN

+0

輸出數組將會是: 'keywords [0] => String 1 String 2 String 3 keywords [1] => String 4 String 5' – Honzo

回答

1

如果關鍵字不存在於字符串,那麼你可以用

array.join("").split("Keyword") 

否則(已擺脫可能的空第一和最後一個元素,也可以),如果你能找到不存在兩個字符做在字符串或關鍵字中,例如#%,你可以做這樣的:

array.join("#").replace(/(^|#)Keyword(#|$)/g, "%").replace(/#/g, "").split("%") 
+0

擊敗了我。如果數組以「關鍵字」開頭和結尾,則可以使用shift()和pop()來裁剪空白元素。不過,我的猜測是,需要更強大的解決方案來避免包含關鍵字 – jackwanders

+0

的非關鍵字數組元素。使用此特定集合,元素將永遠不會包含關鍵字 – Honzo

0
function transformArr(inputArr) { 
    var resultArr = []; 
    var buildString = ""; 
    for (i = 0; i < inputArr.length; i++) { 
     if (inputArr[i] == 'Keyword') { 
      if (buildString != "") { 
       resultArr.push(buildString); 
       buildString = ""; 
      } 
     } else { 
      buildString += inputArr[i]; 
     } 
    } 
    if (buildString != "") { 
     resultArr.push(buildString); 
    } 
    return resultArr; 
} 
array = []; 
array[0] = 'Keyword'; 
array[1] = 'String 1'; 
array[2] = 'String 2'; 
array[3] = 'String 3'; 
array[4] = 'Keyword'; 
array[5] = 'String 4'; 
array[6] = 'String 5'; 
array[7] = 'Keyword'; 

var result = transformArr(array); 
console.log(result); 
相關問題