使用原生JavaScript将对象转换为字符串

时间:2019-03-11 17:57:30

标签: javascript arrays object

我定义了以下对象:

let myObj = {
my: 'name',
is: 'Inigo Montoya',
prepare: 'to die!'
}

使myObj等于{“我的名字叫Inigo Montoya准备死了!”的最佳方法是什么? }?

我知道您可以使用JSON进行Stringify,但我想使用本机Javascript进行。我已经尝试了以下方法来获取由所有对象属性和值组成的字符串:

let combined = Object.entries(obj).forEach(entire => {
  return `${entrie[0]} ${entrie[1]}` });

但是我只会变得不确定。

我很想理解为什么在这种特殊情况下我变得不确定,并且还希望您能说出解决上述问题的最佳方法。谢谢!

6 个答案:

答案 0 :(得分:7)

您不能从forEach返回,而不能从map返回到返回的成对字符串的数组,然后将其连接到一个字符串:

Object.entries(obj).map(entry => `${entry[0]} ${entry[1]}`).join(" ");

或者我会做

Object.entries(obj).flat().join(" ")

答案 1 :(得分:1)

forEach返回undefined。您可以使用Object.entriesreduce

let myObj = {my: 'name',is: 'Inigo Montoya',prepare: 'to die!'}

let string = Object.entries(myObj)
             .reduce((op,[key,value])=>op+= ' '+ key + ' '+ value, '')
             .trim()

console.log(string)

答案 2 :(得分:1)

使用String constructorobject转换为string并使用splitjoin删除:, < / p>

let myObj = {
my: 'name',
is: 'Inigo Montoya',
prepare: 'to die!'
}
console.log(String(JSON.stringify(myObj)).split(':').join(" ").split(',').join(' ').split(`"`).join(''))

答案 3 :(得分:1)

let myObj = {
  my: 'name',
  is: 'Inigo Montoya',
  prepare: 'to die!'
}

const res = Object.entries(myObj).map(el => el[0].concat(" " + el[1])).join(" ")


console.log(res)

答案 4 :(得分:0)

您可以使用reduce(),因为forEach()总是返回undefined

let myObj = {
  my: 'name',
  is: 'Inigo Montoya',
  prepare: 'to die!'
}

let combined = Object.entries(myObj).reduce((ac,entrie)=> ac  + ` ${entrie[0]} ${entrie[1]} ` ,'').trim();;
  console.log(combined)

答案 5 :(得分:0)

let myObj = {
  my: 'name',
  is: 'Inigo Montoya',
  prepare: 'to die!'
}

var the_keys = Object.keys(myObj),
  length = the_keys.length,
  resArray = new Array(length);
  
while (length--) {
  resArray[length] = [the_keys[length], myObj[the_keys[length]]];
}
var myStr = resArray.join(" ").replace(/,/g, ' ');
console.log(myStr);

此答案将适合那些拥有older browser that does not support Object.entries的人。该代码设置了三个变量: the_keys 分配了将myObj传递给Object.keys()的结果, length 被分配了该数组的length属性, resArray 是通过使用 length 变量进行设置来创建新数组的结果。然后,用包含每个键及其对应值的数组迭代地填充 resArray 。变量 myStr 是通过将 resArray 的值与空格和replacing的所有逗号与空格连接在一起来实现的。