Разбить массив на пары и упаковать в объект
У меня есть массив с объявлениями текста 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);