将三个数组合并为一个
Combine three arrays into one
我正在寻找一种更有效的方式来组合这三个数组。两个数据数组和一个连接两个数组的"交叉"数组。
3 阵列
var drives = [
{"drivesId": "rwd", "name": "RWD"},
{"drivesId": "fwd", "name": "FWD"},
{"drivesId": "awd", "name": "AWD"}
]
var cars = [
{"carId": "civic", "name": "Civic"},
{"carId": "wrx", "name": "WRX"},
{"carId": "mustang", "name": "Mustang"},
{"carId": "focus", "name": "Focus"},
]
var drivesXcars = [
{"drivesXcars": "uid1", "carId": "civic", "drivesId": "fwd"},
{"drivesXcars": "uid2", "carId": "wrx", "drivesId": "awd"},
{"drivesXcars": "uid3", "carId": "mustang", "drivesId": "rwd"},
{"drivesXcars": "uid4", "carId": "focus", "drivesId": "fwd"},
]
我希望将它们组合成一个看起来像这样的数组:
var carsComplete = [
{"drivesId": "fwd", "driveName": "FWD", "cars": [
{"carId": "civic", "name": "Civic"},
{"carId": "focus", "name": "Focus"}
]},
{"drivesId": "rwd", "driveName": "RWD", "cars": [
{"carId": "mustang", "name": "Mustang"}
]},
{"drivesId": "awd", "driveName": "AWD", "cars": [
{"carId": "wrx", "name": "WRX"}
]},
]
是的,我可以按照循环方式的标准做到这一点,但这些数组变得更大,标准的"蛮力"方式对我来说还不够好。
我希望有人能知道使用AngularJS和/或lodash更有效的方法。
它可以在普通的JavaScript中轻松实现:
const carsComplete = drives.map(x => ({
drivesId: x.drivesId,
driveName: x.name,
cars: drivesXcars
// Only the cars which belong to this person.
.filter(n => n.drivesId === x.drivesId)
// Get the car by id.
.map(n => cars.find(m => m.carId === n.carId))
}))
请参阅 JS Bin。
使用下划线的解决方案.js
var drivesXcarsGroup = _.groupBy(drivesXcars, "drivesId");
var carsComplete = drives.map(function(driver){
return {
"drivesId": driver.drivesId,
"driveName": driver.name,
"cars": drivesXcarsGroup[driver.name.toLowerCase()]
}
});
相关文章:
- 将两个Json提要合并为一个,并按时间排序
- 将javascript对象(属性+值)合并到一个对象中
- jQuery将代码合并为一个函数
- 将多个jquery函数合并为一个
- 将嵌套数组的元素合并到一个大数组中
- MongoDB聚合将两个不同的字段合并为一个并获取计数
- 如何将多个 Blender JSON 模型合并到一个 Three.js Object3D 对象中
- 在angularJS中合并来自一个服务的两个数组
- 如何使用ES6将两个具有函数的对象合并为一个新对象
- 将文档的MongoDB字段合并到一个文档中
- 将两个图像合并为一个,并使用javascript进行溢出隐藏
- 将值和属性从一个对象合并到另一个对象
- 将两个云代码函数合并为一个函数
- 如何在Three.JS中将两个BufferGeometry合并为一个BufferGeometrics
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中
- 如何将两个json对象合并为一个json
- 将json作为子文档合并到另一个json中
- 创建大量的js文件或者合并为一个文件是一种好的做法吗
- 将CSS和JavaScript合并到一个文件中并进行链接
- 我如何隐藏一个列在html表中,它有一个合并的标题