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;
}, {});
检查样本的输出
检查样本的输出因为我的问题使用了下划线,这就是我使用的。和所有视频讲座一样,效果很好,谢谢!因为我的问题使用了下划线,所以我使用了下划线。和所有视频讲座一样,效果很好,谢谢!因为我的问题使用了下划线,所以我使用了下划线。和所有视频讲座一样,效果很好,谢谢!