Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

一意のフィールドを介してオブジェクトのプロパティをマージし、データを出力します-JavaScript


2つのプロパティ名とマークを含むstudentsオブジェクトがあるとします。 namesisは、各オブジェクトが2つのプロパティnameとrollを持つオブジェクトの配列です。同様に、marksは、各オブジェクトがプロパティmarkandrollを持つオブジェクトの配列です。私たちのタスクは、各オブジェクトの適切なロールプロパティに従って、マークと名前のプロパティを組み合わせることです。

学生 オブジェクトはここにあります-

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)の空間計算量です。ただし、marks配列の要素ごとに新しいプロパティが作成されています。

これが完全なコードです-

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

  1. JavaScriptで別のオブジェクトを介してオブジェクトにアクセスするにはどうすればよいですか?

    以下は、JavaScriptの別のオブジェクトを介してオブジェクトにアクセスするためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <

  2. JavaScriptでオブジェクトごとに一意のIDを作成するにはどうすればよいですか?

    以下は、オブジェクトごとに一意のIDを作成するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>