У меня есть объект с вложенными атрибутами, а некоторые из них имеют свойство «selected». Im пытается получить эти значения с помощью подчеркивания, и хотя мне удалось код не смотрит очень читаемый:Запрос объекта с использованием подчеркивания
_.chain(config)
.pairs()
.map(function(e) {
var s = {};
s[e[0]] = _.chain(e[1])
.filter(function(e) {
if (e.selected) {
return e;
}
})
.pluck('name')
.join(',')
.value();
return s;
})
.flatten()
.filter(function(e) {
if (_.values(e)[0] !== '') {
return e;
}
})
.reduce(_.extend)
.value();
Это объект конфигурации, который я использую:
var config = {
'property__1': [
{name: 'test1', selected: 1},
{name: 'test2'}
],
'property__2': [
{name: '0'},
{name: '1', selected: 1},
{name: '2'},
{name: '3'},
{name: '4', selected: 1}
],
'property__3': [
{name: '0'},
{name: '1'},
{name: '2', selected: 1},
{name: '3'}
],
'property__4': [
{name: 'test1'},
{name: 'test2', selected: 1}
]
};
И хотел бы получить следующий вывод:
{
"property__1": "test1",
"property__2": "1,4",
"property__3": "2",
"property__4": "test2"
}
есть ли что-нибудь еще, что я мог сделать, чтобы реорганизовать его, или какое-либо свойство, Im не знает о том, что может быть полезно, чтобы сделать этот кусок кода дополнительной readab le?
Почему бы использовать JQuery вместо обычного цикла? Btw, императивный стиль может быть более «читаемым» (более длинным), но обычно он не считается более простым. – Bergi