我正在学习下划线并找到了一个任务,我需要帮助...我有一个对象看起来像这样的数组
[
// ...
{
"type": "presence",
"params": {
"interval": 15,
"foo": "something",
"link": {
"fp_type": "1",
"fp_ext_id": "2"
},
},
{
"type": "bar",
"params": {
"interval": 30,
"foo": "foo",
"link": {
"fp_type": "2",
"fp_ext_id": "3"
},
},
},
// ...
]
该任务仅使用下划线将此数组项转换为其中的对象 关键是项目类型,值是它的参数,即:
{
// ...
"presence": {
"interval": 15,
"foo": "something",
"link": {
"fp_type": "1",
"fp_ext_id": "2"
},
},
"bar": {
"interval": 30,
"foo": "foo",
"link": {
"fp_type": "2",
"fp_ext_id": "3"
},
// ...
}
答案 0 :(得分:2)
你可以这样做:
var x = [
{
"type": "presence",
"params": {
"interval": 15,
"foo": "something",
"link": {
"fp_type": "sponsor",
"fp_ext_id": "spotme"
},
},
},
{
"type": "bar",
"params": {
"interval": 30,
"foo": "foo",
"link": {
"fp_type": "2",
"fp_ext_id": "3"
},
},
}
];
var y = _.map(x, function(i) {
let obj = {};
obj[i.type] = i.params;
return obj;
});
//console.log(y);
var result = y.reduce(function(obj,item) {
obj[_.keys(item)[0]] = _.values(item)[0];
return obj;
}, {});
console.log(result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
&#13;