【问题标题】:Write a function called stringFromObject that generates a string from an object's key/value pairs编写一个名为 stringFromObject 的函数,从对象的键/值对生成字符串
【发布时间】:2020-08-13 00:45:14
【问题描述】:

我正在尝试编写一个名为 stringFromObject 的函数,该函数从对象的键/值对生成字符串。

格式应该是“key = value, key = value”。

每个键/值对都应该用逗号和空格分隔,最后一对除外。

到目前为止我的代码:

    //write function that accepts an obj.
function stringFromObject(obj) {
  let result = "";
  //loop over the object's properties and create a new string
  //return format should be "key = value, key = value"
  for (let i in obj) {
    result += i + ' =' + obj[i];
  }
  result += '';
  //return a string 
  return result;
}

stringFromObject({ a: 1, b: '2' }); 
// "a = 1, b = 2"

输出应该是// "a = 1, b = 2",但是,我返回=> 'a =1b =2'。我对如何返回带有值的两个键感到困惑,但省略了逗号?有什么建议可以改正吗?

【问题讨论】:

    标签: javascript arrays javascript-objects helper


    【解决方案1】:

    另一种方式:

    function stringFromObject (obj) {
    let result = "";
    for (let i in obj) {
    result += `${i} = ${obj[i]}, `;
    }
    result = result.slice(0, result.length -2);
    return result;
    }
    
    stringFromObject({ a: 1, b: '2' });
    

    【讨论】:

      【解决方案2】:

      要在每个条目之间放置一个逗号,最好有一个可以.join 的条目数组。您可以使用Object.entries 获得一组条目,它为您提供键及其关联值 - 只需将它们与= 连接在一起即可:

      function stringFromObject(obj) {
        return Object.entries(obj)
          .map(([key, val]) => `${key} = ${val}`)
          .join(', ');
      }
      
      console.log(stringFromObject({ a: 1, b: '2' }));

      要调整您现有的代码,在obj[i] 之后连接一个,,然后在循环之后,切掉最后两个字符 - 但它仍然有点不雅 IMO:

      //write function that accepts an obj.
      function stringFromObject(obj) {
        let result = "";
        //loop over the object's properties and create a new string
        //return format should be "key = value, key = value"
        for (let i in obj) {
          result += i + ' = ' + obj[i] + ', ';
        }
        // remove last comma and space
        result = result.slice(0, result.length - 2);
        return result;
      }
      
      console.log(stringFromObject({ a: 1, b: '2' }));

      【讨论】:

      • @AndreButler 除此之外,您没有得到预期输出的确切原因是因为首先您在字符之间添加了字符串' =',该字符串在等号后不包含空格,导致您的第一个问题。您也永远不会在任何地方在字符串中添加逗号,因此您不能期望逗号会出现在输出中
      • @awarrier99 感谢您的反馈!我能够运行代码并且它通过了!
      猜你喜欢
      • 2016-12-19
      • 2023-02-02
      • 2021-02-28
      • 2020-06-02
      • 2016-10-06
      • 1970-01-01
      • 2015-11-07
      • 2021-03-17
      • 2021-07-08
      相关资源
      最近更新 更多