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的重复。我想不出更好的标题,但这个问题有一点不同。如果它只有一点不同,你至少应该能够使用它向我们展示一些你实际尝试过的代码。我找到的最接近的解决方案类似于答案@hd84335vary=j.map(x,函数(i){let obj={};obj[i.type]=i.params;返回obj;});var result=Object.assign({},…y)
但我仍然不喜欢这个解决方案,我认为这与@GeorgeJemptyI的任务不太合适。我想不出一个更好的标题,但这个问题有一点不同。如果它只有一点不同,你至少应该能够用它向我们展示一些代码,你实际上尝试了我得到的最接近的解决方案类似于@hd84335vary=uj.map(x,函数(i){let obj={};obj[i.type]=i.params;返回obj;})的答案;var result=Object.assign({},…y)代码>但我仍然不喜欢这个解决方案,并且认为这不适合分配任务