2016-05-03 165 views
3

我正在努力解決這個問題,現在試圖找出如何處理索引。這裏的問題:JavaScript - 在不影響索引的情況下將元素插入到數組中?

我有一個字符串:thisIsGreat 使用的基本操作波紋管:

var str = "thisIsGreat"; 
str = str.split(''); //Making it an array 
..... 
str = str.join(''); //String it back again 
console.log(str); 

所需的輸出:["t","h","i","s"," ","I","s"," ","G","r","e","a",t"]

我有很難的單詞之間插入空格而不會影響指標。我嘗試過這樣的事情,但沒有奏效。

for (var i = 0; i < str.length; i++){ 
    if (str[i]+1 == (str[i].toUpperCase())+1) 
     str[i] = " "; 
} 

有沒有辦法解決這個問題?有什麼想法嗎?使用

+0

您需要使用相同的陣列?你不能生成另一個結果? –

+0

是的,我可以生成一個新的數組,如果需要..任何想法? – Bishop

+0

For(var in something)用於獲取對象的所有屬性,而不是數組的元素。你究竟想達到什麼目的? –

回答

8

你可以使用積極向前的替換。

var str = "thisIsGreat"; 
 
    
 
str = str.replace(/(?=[A-Z])/g, ' ').split(''); 
 
document.write('<pre>' + JSON.stringify(str, 0, 4) + '</pre>');

+1

非常感謝你!問題解決了!! – Bishop

3

自己的邏輯

var str = "thisIsGreat"; 
str = str.split(''); //Making it an array 
var result = []; 
for (var i in str){ 
if (str[i]+1 == (str[i].toUpperCase())+1){ 
    result.push(" "); 
    result.push(str[i]); 
}else{ 
    result.push(str[i]); 
    } 
} 
result = result.join(''); //String it back again 
console.log(result); 

,如果你不想要的結果作爲字符串只是刪除到底加入。

https://jsfiddle.net/Ldp58onu/2/

+0

謝謝你堅持我的邏輯!效果很好!! – Bishop

4

你的問題不是很清楚,如果你只是想插入每個大寫字母前的空間,這是相當容易的正則表達式:

r = "thisIsGreat".replace(/[A-Z]/g, " $&"); 
 
alert(r)

+0

這正是我需要的!!!!!謝謝! – Bishop

+1

不客氣。順便說一句,妮娜的答案更準確。 – georg

+0

:)問題解決了! – Bishop

1

只是扭轉你的for循環。

for (var i = str.length - 1; i >= 0; i--){ 
    if (str[i]+1 == (str[i].toUpperCase())+1) 
     str[i] = " "; 
} 
+0

謝謝你的洞察! :) – Bishop

1
'thisIsGreat'.replace(/([A-Z])/g,' $1').split('').join('", "') 
//Output: "t", "h", "i", "s", " ", "I", "s", " ", "G", "r", "e", "a", "t" 
相關問題