Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Gộp thuộc tính đối tượng qua trường duy nhất rồi in dữ liệu - JavaScript

Cho đối tượng students chứa hai thuộc tính names và marks. names là mảng đối tượng có name và roll, marks là mảng đối tượng có mark và roll. Nhiệm vụ: gộp marks và names theo roll phù hợp.

Đối tượng students:

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 }] }

Định nghĩa hàm combineProperties gộp thuộc tính tại chỗ (in-place):

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);

Độ phức tạp thời gian O(mn), không gian O(1). Tạo thuộc tính mới cho mỗi phần tử của mảng marks.

Ví dụ hoàn chỉnh

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);

Kết quả

Đầu ra console:

{ 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' } ] }