두 개의 속성 이름과 표시를 포함하는 학생 개체가 있다고 가정해 보겠습니다. namesis는 두 개의 속성 name과 roll을 가진 각 객체가 있는 객체의 배열이며, 유사하게 mark는 각 객체에 mark와 roll 속성이 있는 객체의 배열입니다. 우리의 임무는 각 개체의 적절한 롤 속성에 따라 표시와 이름 속성을 결합하는 것입니다.
학생 개체가 여기에 주어집니다 -
const students = {
marks: [{
roll: 123,
mark: 89
}, {
roll: 143,
mark: 69
}, {
roll: 126,
mark: 91
}, {
roll: 112,
mark: 80
}],
names: [{
name: 'Aashish',
roll: 126
}, {
name: 'Sourav',
roll: 112
}, {
name: 'Vineet',
roll: 143
}, {
name: 'Kartik',
roll: 123
}]
} 학생 객체를 사용하고 추가 공간을 사용하지 않고 속성을 제자리에 결합하는 함수 CombineProperties를 정의해 보겠습니다. −
const combineProperties = (students) => {
const { marks, names } = students;
marks.forEach(marksObj => {
const { roll } = marksObj;
marksObj.name = names.find(namesObj => namesObj.roll ===roll).name;
})
delete students['names'];
};
combineProperties(students);
console.log(students); 이 코드의 시간 복잡도는 O(mn)입니다. 여기서 m과 n은 배열 이름 및 표시의 각 크기와 이 O(1)의 공간 복잡도입니다. 그러나 마크 배열의 각 요소에 대해 새 속성이 생성되고 있습니다.
전체 코드는 다음과 같습니다 -
예
const students = {
marks: [{
roll: 123,
mark: 89
}, {
roll: 143,
mark: 69
}, {
roll: 126,
mark: 91
}, {
roll: 112,
mark: 80
}],
names: [{
name: 'Aashish',
roll: 126
}, {
name: 'Sourav',
roll: 112
}, {
name: 'Vineet',
roll: 143
}, {
name: 'Kartik',
roll: 123
}]
}
const combineProperties = (students) => {
const { marks, names } = students;
marks.forEach(marksObj => {
const { roll } = marksObj;
marksObj.name = names.find(namesObj => namesObj.roll ===roll).name;
})
delete students['names'];
};
combineProperties(students);
console.log(students); 출력
콘솔 출력은 -
{
marks: [
{ roll: 123, mark: 89, name: 'Kartik' },{ roll: 143, mark: 69, name: 'Vineet' },
{ roll: 126, mark: 91, name: 'Aashish' },{ roll: 112, mark: 80, name: 'Sourav' }
]
}