2016-04-14 21 views
-2

我在我的javascript中有一個Json對象 我想用'hello'替換所有'hi'的實例。 這是我的代碼我想用替換函數掃描一個json對象,然後用一個字符串替換匹配的字

<!DOCTYPE html> 
<html> 
<body> 


<p id="demo"></p> 

<button onclick="myFunction()">Try it</button> 

<script> 
function myFunction() { 
    var res1 = /hi/gi; 
    var str = [{"hi":"new","hi":"sun","hi":"hi"}]; 
    var res = str.replace(res1, "hello"); 
    document.getElementById("demo").innerHTML = res; 
} 
</script> 

</body> 
</html> 

任何幫助,將不勝感激。由於

編輯:

function myFunction() { 
    var res1 = /hi/gi; 
    var str = {"hi":[{"men":"hi","hi":"sun","hi":"hi"}]}; 
    var mouse = JSON.stringify(str); 
    var res = mouse.replace(res1, "hello"); 
    document.getElementById("demo").innerHTML = res; 
} 

使用此功能後,只有打印{ 「你好」:[{ 「男人」: 「你好」, 「你好」: 「你好」}]} ..任何通過創建「陽光

+2

當您運行代碼時出現錯誤。 'str'不是一個字符串,它是一個數組。數組沒有'.replace()'方法。 –

+0

你需要在替換之前將str轉換爲String。轉換你的對象,你可以使用[json stringify](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/JSON/stringify) –

+0

@RayLloy你能告訴我更多,因爲我很新增JS和JSON。 –

回答

1

這不是JSON對象,這僅僅是一個Javascript對象JSON做有SMAE語法,但不要混合使用它們

此外:原因是不打印「你好」?。像這樣的對象在這裏是你創建的:

  1. [] - > str是一個數組

  2. [{}] - > str是一個數組,其第一值是一個目的

  3. 「HI」: 「新」, 「喜」 :「太陽」,「嗨」:「嗨」} - >對象的關鍵值

最後:str [0] .hi的值爲「hi」或「new」不知道哪一個會被忽略)。 str [0] .sun將具有值「hi」。

我不明白你爲什麼要重命名你的對象的關鍵。如果要替換所有值:

for(key in str[0]){ 
    str[key] = str[key].replace(res1, "hello"); 
} 
+0

我不希望它是一個數組。我想創建一個應該被掃描的JSON對象,然後匹配的值應該被替換。這對我有點困惑 –

+0

你不明白你說的「JSON對象」。 JSON對象是一種數據格式,當您要創建對象/數組時,它的寫法與JavaScript中的相同。每一層對象都由鍵和值組成。如果重寫值有確切的興趣,則沒有重命名鍵。如果有兩次相同的密鑰不起作用,那麼數據將被反序列化時會跳過一個。你真的想做什麼?你爲什麼需要這個? – Walfrat

+0

我試圖用我的json對象中的'hi'來替換每個'hi'實例,即使它重複。無論是關鍵名稱「嗨」還是「嗨」值。它應該只是由'你好'取代。 –

相關問題