nir*_*air 3 javascript arrays underscore.js ecmascript-6
我有两个对象数组:
var a = [{
"id": 1,
"name": "q"
},
{
"id": 2,
"name": "l"
}]
Run Code Online (Sandbox Code Playgroud)
另一个是
var b = [{
"id": 3,
"sub": 1,
"name": "ni"
},
{
"id": 4,
"sub": 2,
"name": "bh"
}]
Run Code Online (Sandbox Code Playgroud)
这里的sub是ida
我需要一个新的数组,如下所示:
var c = [
{
"id":1,
"name":"q",
"map":[
{
"id":3,
"name":"ni"
}
]
},
{
"id":2,
"name":"l",
"map":[
{
"id":4,
"name":"bh"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 JavaScript 中做到这一点?
我在我的项目中使用下划线。
在普通的 Javascript 中,您可以使用Array#map,Array#forEach和哈希表。
var a = [{ "id": 1, "name": "q" }, { "id": 2, "name": "l" }],
b = [{ "id": 3, "sub": 1, "name": "ni" }, { "id": 4, "sub": 2, "name": "bh" }],
hash = Object.create(null),
result = a.map(function (a, i) {
hash[a.id] = { id: a.id, name: a.name };
return hash[a.id];
}, hash);
b.forEach(function (a) {
hash[a.sub].map = hash[a.sub].map || [];
hash[a.sub].map.push({ id: a.id, name: a.name });
}, hash);
console.log(result);Run Code Online (Sandbox Code Playgroud)
ES6
var a = [{ "id": 1, "name": "q" }, { "id": 2, "name": "l" }],
b = [{ "id": 3, "sub": 1, "name": "ni" }, { "id": 4, "sub": 2, "name": "bh" }],
hash = Object.create(null),
result = a.map((hash => a => hash[a.id] = { id: a.id, name: a.name, map: [] })(hash));
b.forEach((hash => a => hash[a.sub].map.push({ id: a.id, name: a.name }))(hash));
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6254 次 |
| 最近记录: |