Как поместить объектные литералы в виде пар ключ-значение в массив?

1

Каков наилучший способ разделения каждой пары на массив?

const myObject = {
  firstName: 'John',
  surname: 'Doe',
  city: 'New York'
}

чтобы:

[{'firstName': 'John'}, {'surname': 'Doe'}, {'city': 'New York'}]

Btw, старые сообщения предлагают отображение lodash

const newArray = _.map(myObject, (value, key) => ({key, value}))

но он возвратит что-то вроде:

[ { key: 'firstName', value: 'John' },
 { key: 'surname', value: 'Doe' },
 { key: 'city', value: 'New York' } ]

Я не хочу, чтобы ключи были там.

  • 0
    Изменить на ({ [key]: value })
  • 0
    Круто, спасибо большое! Если вы поставите это в ответе, я отмечу ответ на вопрос. Еще раз спасибо!
Показать ещё 1 комментарий
Теги:
ecmascript-6
lodash

1 ответ

1
Лучший ответ

Вы можете достичь требуемого результата с помощью простой JS:

Object.keys(myObject).map(key => ({[key]: myObject[key]}));

Этот подход использует вычисленные имена свойств ES2015.

Как предложено в комментариях, вы также можете использовать Object.entries:

Object.entries(myObject).map(([p, v]) => ({[p]: v}))

Если вы хотите использовать lodash в любом случае, вы должны окружить key квадратными скобками:

const newArray = _.map(myObject, (value, key) => ({[key], value}))
  • 0
    Ты прав, я выбрал твой первый вариант. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню