如何循环遍历 2 个对象数组并通过匹配 id 合并
How to loop through 2 object arrays and merge by matching id
我找到了一些示例并使它几乎可以正常工作。我正在尝试比较 2 个对象数组:
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。我现在得到的结果是,如果有多个匹配的 exerciseSprings,只有其中 1 个被推入
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);
我找到了一些示例并使它几乎可以正常工作。我正在尝试比较 2 个对象数组:
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。我现在得到的结果是,如果有多个匹配的 exerciseSprings,只有其中 1 个被推入
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);