迭代时附加字符串

时间:2019-03-07 15:17:36

标签: javascript

我有一个对象,其中每个键都有对应的字符串数组 我想用\ <br>

替换\ n

var i = 0;
var obj = {
  'one': ['hello\nworld', 'java\nscript'],
  'two': ['hi\nworld', 'java\nscript\nis\nawesome']
}



for (let key in obj) {
  let reg = new RegExp('\n', "g");
  for (var i = 0; i <= obj[key].length; i++) {
    document.body.innerHTML += obj[key][i].replace(/\n/g, '<br>');
  }

}

4 个答案:

答案 0 :(得分:1)

您可以将对象的Object.valuesflat作为结果数组,将其map替换为\n的{​​{1}},然后是{{1 }}最终数组并将其附加到文档中:

<br />

答案 1 :(得分:0)

问题出在这里for(var i=0 ; i<=obj[key].length; i++)。您正在使用i<=obj[key].lengthi的长度将大于array的长度,并且会引发错误:

  

未捕获的TypeError:无法读取replace的属性undefined

您应该使用i < obj[key].length

一种更好的方法是使用join()

将数组转换为字符串

let obj = {'one' : ['hello\nworld','java\nscript'],
 'two' : ['hi\nworld', 'java\nscript\nis\nawesome']}

for(let key in obj){
  let reg = new RegExp('\n',"g");
  document.body.innerHTML +=  obj[key].join('\n').replace(reg,'<br>');
}

答案 2 :(得分:0)

修复拼写错误<=,应为<

或者有一个替换项:

var obj = {
  'one': ['hello\nworld', 'java\nscript'],
  'two': ['hi\nworld', 'java\nscript\nis\nawesome']
}

obj = JSON.parse(JSON.stringify(obj).replace(/\\n/g,"<br/>"))

for (let key in obj) {
  for (var i = 0; i < obj[key].length; i++) {
    document.body.innerHTML += obj[key][i];
  }
}

答案 3 :(得分:0)

您可以使用此功能

C

在这里,您将要处理的字符串发送到function reemplazar(str, nval, find){ var nstr=""; var cadena= new RegExp(find, "g"); var ind = (str.match(cadena) || []).length; for(var h=0; h<ind; h++){ if(h>0){ nstr = nstr.replace(find, nval); }else{ nstr = str.replace(find, nval); } } return (nstr==="") ? str : nstr; } 参数中,str param是所有出现的新值,而nval param是您要搜索到的char或字符串find