Напишите функцию с именем stringFromObject, которая генерирует строку из пар ключ / значение объекта - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь написать функцию с именем stringFromObject, которая генерирует строку из пар ключ / значение объекта.

Формат должен быть «ключ = значение, ключ = значение».

Каждая пара ключ / значение должна быть разделена запятой и пробелом, кроме последней пары.

Пока мой код:

    //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'. Я запутался в том, как вернуть два ключа со значениями, но запятая не указана? Любые предложения о том, что исправить?

1 Ответ

2 голосов
/ 29 апреля 2020

Чтобы поставить запятую между каждой записью, было бы неплохо иметь массив записей, которые вы можете .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], а затем после l oop отрежьте последние два символа - но это все еще своего рода не элегантный ИМО:

//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' }));
...