2011-06-08 47 views
0

如果我有字符串像數組:什麼是最優雅的方式來使這種字符串數組更改?

var myStrArr=['book-in-my-house', 
       'chair-in-my-house', 
       'bed-in-my-house', 
       'TV-in-my-house']; 

我想改變myStrArrherStrArr,如:

var herStrArr=['book-in-her-house', 
       'chair-in-her-house', 
       'bed-in-her-house', 
       'TV-in-her-house']; 

正如您上面所看到的,改變每「my」在每個字符串「her」。 在JavaScript中進行此更改的最優雅方式是什麼?

+0

如何關於刪除所有「我的」構建strArr? – Leem 2011-06-08 10:27:40

回答

3

比循環通過沒有其他辦法。正如你在你的標籤中注意到你使用的是jQuery,你可以使用jQuery的$.map來協助。這不是技術上最優雅的解決方案,但最簡單,最短的一個:

var herStrArr = $.map(myStrArr, function(str) { 
    return str.replace('-my-', '-her-'); 
}); 
+1

+1,但小心使用關鍵字作爲變量名;) – 2011-06-08 10:29:13

+0

@ BOX9,真實,監督我的一部分。 – 2011-06-08 10:51:31

0

您可以使用jQuery $.each功能。

var myStrArr=['book-in-my-house', 
       'chair-in-my-house', 
       'bed-in-my-house', 
       'TV-in-my-house']; 

$.each(myStrArr,function(i){ myStrArr[i] = myStrArr[i].replace('-my-','-her-');}) 

活生生的例子:http://jsfiddle.net/Xx5XM/

+0

-1。 ''在我的房子裏神祕'' – 2011-06-08 10:43:23

+0

爲清教徒編輯。 – Jamiec 2011-06-08 10:47:22

+0

更好。不知道如何指出你的代碼中的根本缺陷使我成爲「清教徒」,但我們走了。 – 2011-06-08 10:57:14

0

你不使用循環 - 如果你可以選擇,但不保證包含在任何字符串的字符。例如,"|"你可以這樣做:

var herStrArr = myStrArr.join("|").replace(/\bmy\b/gi, "her").split("|"); 

刪除單詞 「我的」,我假設你的意思是你想要的:

book-in-my-house => book-in-house 

如果是這樣的話:

var strArr = myStrArr.join("|").replace(/-my\b/gi, "").split("|"); 
0

店面['book', 'chair', 'bed', 'TV']取而代之,那麼你不必做任何事情。

+0

不會輕微回答問題。而且你的臉頰會降低一個完美的(如果是簡潔的)答案。我不會讓你退縮,因爲我不那麼吝嗇。 – Jamiec 2011-06-08 10:49:04

+0

@Jamiec:它完全回答了這個問題。這是實現OP目標的最優雅方式:他應該刪除所有這些愚蠢的數據冗餘。我告訴你爲什麼我低估了你;我不明白你的答案中有多嚴重的缺陷是「厚臉皮」的。這將是我對這個問題的最後評論。 – 2011-06-08 10:56:59

+0

@Jamiec,我認爲這個答案有可取之處,但它的措辭的方式它打開誤解。通過僅存儲不同字符串的部分,您可以輕鬆地追加「我的」,「她」或任何您想要的內容。 – 2011-06-08 11:26:48

相關問題