2016-04-14 17 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'实例,即使它重复。无论是关键名称“嗨”还是“嗨”值。它应该只是由'你好'取代。 –

相关问题