Javascript 仅使用下划线将数组转换为对象

Javascript 仅使用下划线将数组转换为对象,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我正在学习下划线,并找到了一项需要帮助的任务。。我有一个数组,对象看起来像这样 [ // ... { "type": "presence", "params": { "interval": 15, "foo": "something", "link": { "fp_type": "1",

我正在学习下划线,并找到了一项需要帮助的任务。。我有一个数组,对象看起来像这样

[
    // ...
    {
            "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"
       },
  // ...
}

您可以这样做:

var x=[
{
“类型”:“存在”,
“参数”:{
“间隔”:15,
“foo”:“某物”,
“链接”:{
“fp_类型”:“发起人”,
“fp_ext_id”:“spotme”
},
},
},
{
“类型”:“条”,
“参数”:{
“间隔”:30,
“foo”:“foo”,
“链接”:{
“fp_类型”:“2”,
“fp_外部id”:“3”
},
},
}
];
变量y=u2;.map(x,函数(i){
设obj={};
obj[i.type]=i.params;
返回obj;
});
//控制台日志(y);
var result=y.reduce(函数(obj,项){
对象[u.键(项)[0]]=值(项)[0];
返回obj;
}, {});
控制台日志(结果)

您可以这样做:

var x=[
{
“类型”:“存在”,
“参数”:{
“间隔”:15,
“foo”:“某物”,
“链接”:{
“fp_类型”:“发起人”,
“fp_ext_id”:“spotme”
},
},
},
{
“类型”:“条”,
“参数”:{
“间隔”:30,
“foo”:“foo”,
“链接”:{
“fp_类型”:“2”,
“fp_外部id”:“3”
},
},
}
];
变量y=u2;.map(x,函数(i){
设obj={};
obj[i.type]=i.params;
返回obj;
});
//控制台日志(y);
var result=y.reduce(函数(obj,项){
对象[u.键(项)[0]]=值(项)[0];
返回obj;
}, {});
控制台日志(结果)

在本例中,返回包含2个对象的数组。关键是将数组转换为单个对象,其中key是类型,value是参数(它们可能是嵌套的)。如果有多个类型,选择哪种类型作为键?对于值,它是一个数组吗?对象中有多个键,这些键的值来自paramsI更新的示例,以帮助您理解任务:)。第二个被剪掉的代码应该是由第一个代码组成的返回对象。我得到了你想要的!现在检查它是如何完成的。这里有一个关于主要问题的链接,我认为在这个示例中,您将面临这个包含2个对象的返回数组。关键是将数组转换为单个对象,其中key是类型,value是参数(它们可能是嵌套的)。如果有多个类型,选择哪种类型作为键?对于值,它是一个数组吗?对象中有多个键,这些键的值来自paramsI更新的示例,以帮助您理解任务:)。第二个被剪掉的代码应该是由第一个代码组成的返回对象。我得到了你想要的!现在检查它是如何完成的。这是一个关于主要问题的链接,我想你可能会面临@georgejempty的重复。我想不出更好的标题,但这个问题有一点不同。如果它只有一点不同,你至少应该能够使用它向我们展示一些你实际尝试过的代码。我找到的最接近的解决方案类似于答案@hd84335
vary=j.map(x,函数(i){let obj={};obj[i.type]=i.params;返回obj;});var result=Object.assign({},…y)
但我仍然不喜欢这个解决方案,我认为这与@GeorgeJemptyI的任务不太合适。我想不出一个更好的标题,但这个问题有一点不同。如果它只有一点不同,你至少应该能够用它向我们展示一些代码,你实际上尝试了我得到的最接近的解决方案类似于@hd84335
vary=uj.map(x,函数(i){let obj={};obj[i.type]=i.params;返回obj;})的答案;var result=Object.assign({},…y)但我仍然不喜欢这个解决方案,并且认为这不适合分配任务