Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中将具有相同键的嵌套对象合并为单个对象_Javascript_Arrays_Object - Fatal编程技术网

在JavaScript中将具有相同键的嵌套对象合并为单个对象

在JavaScript中将具有相同键的嵌套对象合并为单个对象,javascript,arrays,object,Javascript,Arrays,Object,这是我在JavaScript中的数组,我想将下面的teacher对象合并为combine单个对象以进一步执行操作 const data = [ { name: "ab", class: 1, grade: "A", teacher: { teacherName: "tab", age: 34, school: "ab pblc scl" } }, { name: "cd", class: 2,

这是我在JavaScript中的数组,我想将下面的teacher对象合并为combine单个对象以进一步执行操作

const data = [
  {
    name: "ab",
    class: 1,
    grade: "A",
    teacher: {
      teacherName: "tab",
      age: 34,
      school: "ab pblc scl"
    }
  },
  {
    name: "cd",
    class: 2,
    grade: "B",
    teacher: {
      teacherName: "efg",
      age: 35,
      school: "cd pblc scl"
    }
  }
];
这是我的预期输出。这里教师对象与其他单个对象合并。你知道我该怎么做吗

const data = [
  {
    name: "ab",
    class: 3,
    grade: "B",
    teacherName: "kio",
    age: 38,
    school: "ab pblc scl"

  },
  {
    name: "de",
    class: 2,
    grade: "B",
    teacherName: "tde",
    age: 36,
    school: "de pblc scl"
   }

 }
];

任何帮助都将不胜感激

您可以使用spread operator来完成

const data = [
  {
    name: "ab",
    class: 1,
    grade: "A",
    teacher: {
      teacherName: "tab",
      age: 34,
      school: "ab pblc scl"
    }
  },
  {
    name: "cd",
    class: 2,
    grade: "B",
    teacher: {
      teacherName: "efg",
      age: 35,
      school: "cd pblc scl"
    }
  }
];

const newData = data.map(d => {
  const dClone = Object.assign({},d);
  delete dClone.teacher;
  return {
    ...dClone,
    ...d.teacher
  }
})

console.log(newData);

您可以分解
teacher
,并使用
teacher
将数组的其余部分分散到一个新对象

方法:

  • 教师

    result = data.map(({ teacher, ...object }) => ({ ...object, ...teacher }));
                       ^ ^^^^^^^            ^
    
  • 要获取所有其他属性

    result = data.map(({ teacher, ...object }) => ({ ...object, ...teacher }));
                       ^          ^^^^^^^^^ ^
    
  • 用于获取对象自身可枚举属性的副本

    result = data.map(({ teacher, ...object }) => ({ ...object, ...teacher }));
                                                   ^ ^^^^^^^^^  ^^^^^^^^^^ ^
    
const
数据=[{姓名:“ab”,班级:1,年级:“A”,教师:{教师姓名:“tab”,年龄:34岁,学校:“ab pblc scl”},{姓名:“cd”,班级:2,年级:“B”,教师:{教师姓名:“efg”,年龄:35岁,学校:“cd pblc scl”},
结果=data.map({teacher,…object})=>({…object,…teacher}));
控制台日志(结果)
。作为控制台包装{最大高度:100%!重要;顶部:0;}