如何循环通过2个对象数组并通过匹配id进行合并
How to loop through 2 object arrays and merge by matching id
我找到了一些例子,并使其几乎起作用。我正在尝试比较两个对象数组:
var responseExercises = [{
"exerciseId": 44,
"exerciseName": "Double Leg Press with Treading",
"exerciseBenefits": "Core Control, Axial Elongation",
"exerciseSprings": [],
"isHidden": false,
"workoutId": null,
"workouts": [],
"exerciseImages": [],
"exerciseRepetitions": []
}, {
"exerciseId": 46,
"exerciseName": "Bent Arm Arcs with Quarter Circles",
"exerciseBenefits": "Improved Posture, Upper Torso Alignment",
"exerciseSprings": [],
"isHidden": false,
"workoutId": null,
"workouts": [],
"exerciseImages": [],
"exerciseRepetitions": []
}, {
"exerciseId": 47,
"exerciseName": "Bridging with Leg Press",
"exerciseBenefits": "Spine Articulation, Upper Torso Alignment",
"exerciseSprings": [],
"isHidden": false,
"workoutId": null,
"workouts": [],
"exerciseImages": [],
"exerciseRepetitions": []
}];
var responseSprings = [{
"clientExerciseSpringId": 1,
"clientExerciseSpringCount": "2",
"clientExerciseSpringColor": "blue",
"clientExerciseSpringLevel": "bottom",
"exerciseId": 44,
"clientWorkoutId": 4,
"clientWorkout": null
}, {
"clientExerciseSpringId": 2,
"clientExerciseSpringCount": "1",
"clientExerciseSpringColor": "blue",
"clientExerciseSpringLevel": "bottom",
"exerciseId": 44,
"clientWorkoutId": 4,
"clientWorkout": null
}, {
"clientExerciseSpringId": 3,
"clientExerciseSpringCount": "2",
"clientExerciseSpringColor": "yellow",
"clientExerciseSpringLevel": "bottom",
"exerciseId": 46,
"clientWorkoutId": 4,
"clientWorkout": null
}, {
"clientExerciseSpringId": 4,
"clientExerciseSpringCount": "1",
"clientExerciseSpringColor": "yellow",
"clientExerciseSpringLevel": "top",
"exerciseId": 46,
"clientWorkoutId": 4,
"clientWorkout": null
}, {
"clientExerciseSpringId": 5,
"clientExerciseSpringCount": "2",
"clientExerciseSpringColor": "blue",
"clientExerciseSpringLevel": "bottom",
"exerciseId": 47,
"clientWorkoutId": 4,
"clientWorkout": null
}];
我需要把responseSprings推到那里匹配responseExercise。我现在得到的结果是,如果有多个匹配的练习,那么只有其中一个被推入
responseSprings.responseSprings
数组。我在项目中使用下划线,所以可以使用更好的解决方案。
小提琴
vm.combineResponse = function(responseExercises, responseSprings) {
console.log($.map(responseExercises, function(exercise) {
var spring = $.grep(responseSprings, function(spring) {
return spring.exerciseId === exercise.exerciseId;
})[0];
exercise.exerciseSprings.push(spring);
return exercise;
}));
};
vm.combineResponse(responseExercises, responseSprings)
使用for循环怎么样?没有图书馆似乎很简单。
for (var i = 0; i < responseExercises.length; i++) {
var exercise = responseExercises[i];
var id = exercise.exerciseId;
for (var j = 0; j < responseSprings.length; j++) {
var spring = responseSprings[j];
if (spring.exerciseId == id) {
exercise.exerciseSprings.push(spring);
}
}
};
console.log(responseExercises);
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- JQuery合并了keyup和focusout两个函数
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 如何循环通过2个对象数组并通过匹配id进行合并
- 基于唯一ID合并geojson
- 如何有效地匹配两个不同 JavaScript 对象上的 id,并将它们合并在一起
- 如何在Immutable.js中按id合并列表
- 如果对象 id 相同,如何合并对象
- JavaScript 按 id 合并对象
- 按id合并两个阵列的有效方法,无重复
- 通过从html对象ID(如按钮ID)传递变量来合并javascript函数
- 循环遍历数组以查找具有匹配id的所有对象,并将这些对象合并到数组中的一个元素中
- 根据id按顺序合并两个数组
- jQuery合并不同的id's函数
- 用Angular JS基于id合并数组中的多个对象
- 如何使用lodash按ID合并两个对象数组
- 如何在javascript中按ID合并多个对象数组
- 合并与id匹配的两个数组