Разбить массив на пары и упаковать в объект

У меня есть массив с объявлениями текста CSS, как это: ['display: none ', 'opacity: 0.1', ' color: #ff0000']

Я хочу разделить их на нотацию ключ / значение объекта, чтобы получилось так:

{
  display: 'none',
  opacity: 0.1,
  color: '#ffffff'
}

редактировать: у меня работает неправильный пример, но он кажется слишком сложным, и он не служит цели (d'oh). У тебя есть рабочий?

cssStyleDeclarations.map(function(item) {
  var x = item.split(':');
  var ret = {};
  ret[x[0].trim()] = x[1].trim();

  return ret;
});

Возвращает его как массив с объектом для каждой записи ([Object, Object, Object]), но я хочу это как чистый объект.

1 ответ

Решение

Проверять, выписываться Array.prototype. reduce():

var input = ['display: none ', 'opacity: 0.1', ' color: #ff0000'];

var css = input.reduce((p, c) => {
  var x = c.split(':');
  p[x[0].trim()] = x[1].trim();
  return p;
}, {});

console.log(css);

Другие вопросы по тегам