Javascript 下划线将数组转换为对象键

Javascript 下划线将数组转换为对象键,javascript,underscore.js,Javascript,Underscore.js,我正在尝试将此数组转换为对象。使用下划线,我要转换此数组: [ { "id": "parentA", "children": [ { "name": "name1" }, { "name": "name2" }, { "name": "name3" } ] }, { "id": "parentB",

我正在尝试将此数组转换为对象。使用下划线,我要转换此数组:

[
{
    "id": "parentA",
    "children": [
        {
            "name": "name1"
        },
        {
            "name": "name2"
        },
        {
            "name": "name3"
        }
    ]
},
{
    "id": "parentB",
    "children": [
        {
            "name": "name4"
        },
        {
            "name": "name5"
        },
        {
            "name": "name6"
        }
    ]
}]
进入一个如下所示的对象:

{
    "name1": "parentA",
    "name2": "parentA",
    "name3": "parentA",
    "name4": "parentB",
    "name5": "parentB",
    "name6": "parentB"
}

我真的只是在寻找可能的最干净/最简单的方法。

这里有一个相当简单的方法,用两个
reduce

var数据=[
{
“id”:“parentA”,
“儿童”:[
{
“名称”:“名称1”
},
{
“名称”:“名称2”
},
{
“名称”:“名称3”
}
]
},
{
“id”:“parentB”,
“儿童”:[
{
“名称”:“名称4”
},
{
“名称”:“名称5”
},
{
“名称”:“名称6”
}
]
}];
var out=\减少(数据、函数(结果、父级){
_.reduce(父项、子项、函数(r、子项){
r[child.name]=parent.id;
返回r;
},结果);
返回结果;
}, {});
document.write(JSON.stringify(out))

这里有一个非常简单的方法,可以使用两个
reduce

var数据=[
{
“id”:“parentA”,
“儿童”:[
{
“名称”:“名称1”
},
{
“名称”:“名称2”
},
{
“名称”:“名称3”
}
]
},
{
“id”:“parentB”,
“儿童”:[
{
“名称”:“名称4”
},
{
“名称”:“名称5”
},
{
“名称”:“名称6”
}
]
}];
var out=\减少(数据、函数(结果、父级){
_.reduce(父项、子项、函数(r、子项){
r[child.name]=parent.id;
返回r;
},结果);
返回结果;
}, {});
document.write(JSON.stringify(out))
var a=[{
“id”:“parentA”,
“儿童”:[{
“名称”:“名称1”
}, {
“名称”:“名称2”
}, {
“名称”:“名称3”
}]
}, {
“id”:“parentB”,
“儿童”:[{
“名称”:“名称4”
}, {
“名称”:“名称5”
}, {
“名称”:“名称6”
}]
}];
var new_obj={};
var len=a.长度;
对于(j=0;j
var a=[{
“id”:“parentA”,
“儿童”:[{
“名称”:“名称1”
}, {
“名称”:“名称2”
}, {
“名称”:“名称3”
}]
}, {
“id”:“parentB”,
“儿童”:[{
“名称”:“名称4”
}, {
“名称”:“名称5”
}, {
“名称”:“名称6”
}]
}];
var new_obj={};
var len=a.长度;
对于(j=0;j

如果您支持没有本机reduce和forEach数组方法的浏览器,则只需使用下划线,但您可以这样做

var result = _.reduce(array, function(memo, entry) {
    _.each(entry.children, function(child) {
        memo[child.name] = entry.id;
    });
    return memo;
}, {});

如果您支持没有本机reduce和forEach数组方法的浏览器,则只需要使用下划线,但您可以这样做

var result = _.reduce(array, function(memo, entry) {
    _.each(entry.children, function(child) {
        memo[child.name] = entry.id;
    });
    return memo;
}, {});
检查样本的输出


检查样本的输出

因为我的问题使用了下划线,这就是我使用的。和所有视频讲座一样,效果很好,谢谢!因为我的问题使用了下划线,所以我使用了下划线。和所有视频讲座一样,效果很好,谢谢!因为我的问题使用了下划线,所以我使用了下划线。和所有视频讲座一样,效果很好,谢谢!