Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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,第一次在这里发布,希望得到一些帮助,我似乎不知道如何解决这个问题。它基本上是创建一个函数,该函数接收返回新对象的对象数组 由于某些原因,push不会通过并返回push的error属性未定义 const organizeInstructors=函数(讲师){ 让output={};//那么创建对象的 for(设i=0;i 数据还原( (r,c)=>( !r[c.course]//检查累加器是否没有c.course作为键 ?((r[c.course]=[]),r[c.course].push(c.

第一次在这里发布,希望得到一些帮助,我似乎不知道如何解决这个问题。它基本上是创建一个函数,该函数接收返回新对象的对象数组

由于某些原因,push不会通过并返回push的error属性未定义

const organizeInstructors=函数(讲师){
让output={};//那么创建对象的
for(设i=0;i]));看起来您对迭代数组和键入对象有点困惑

let organizeInstructors = function(instructors) {
let output = {}; // so the obvious which is to create the object
  for(let i = 0; i < instructors.length; i++) { 
    const instructor = instructors[i]
    if(!output[instructor.course]) { 
      output[instructor.course] = []
    }                                                   
    output[instructor.course].push(instructor.name)   
   }
return output;
}
console.log(organizeInstructors([
  {name: "Samuel", course: "iOS"},
  {name: "Victoria", course: "Web"},
  {name: "Karim", course: "Web"},
  {name: "Donald", course: "Web"}
]))
让organizeInstructors=函数(讲师){
让output={};//那么创建对象的
对于(设i=0;i

添加const
讲师
也会使阅读变得更容易

看起来您对迭代数组和键入对象有点困惑

let organizeInstructors = function(instructors) {
let output = {}; // so the obvious which is to create the object
  for(let i = 0; i < instructors.length; i++) { 
    const instructor = instructors[i]
    if(!output[instructor.course]) { 
      output[instructor.course] = []
    }                                                   
    output[instructor.course].push(instructor.name)   
   }
return output;
}
console.log(organizeInstructors([
  {name: "Samuel", course: "iOS"},
  {name: "Victoria", course: "Web"},
  {name: "Karim", course: "Web"},
  {name: "Donald", course: "Web"}
]))
让organizeInstructors=函数(讲师){
让output={};//那么创建对象的
对于(设i=0;i

添加const
讲师
也使得使用
reduce

data=[{name:“Samuel”,课程:“iOS”},{name:“Victoria”,课程:“Web”},{name:“Karim”,课程:“Web”},{name:“Donald”,课程:“Web”},];
getObj=(数据)=>
数据还原(
(r,c)=>(
!r[c.course]//检查累加器是否没有c.course作为键
?((r[c.course]=[]),r[c.course].push(c.name))//然后创建一个与键对应的数组,然后push c.name
:r[c.course].push(c.name),//否则将c.name推送到相应的数组中
R
),
{}
);

console.log(getObj(数据))使用
reduce

data=[{name:“Samuel”,课程:“iOS”},{name:“Victoria”,课程:“Web”},{name:“Karim”,课程:“Web”},{name:“Donald”,课程:“Web”},];
getObj=(数据)=>
数据还原(
(r,c)=>(
!r[c.course]//检查累加器是否没有c.course作为键
?((r[c.course]=[]),r[c.course].push(c.name))//然后创建一个与键对应的数组,然后push c.name
:r[c.course].push(c.name),//否则将c.name推送到相应的数组中
R
),
{}
);
console.log(getObj(数据))这将使用该方法

请注意,这不会检查值是否已经存在于课程数组中,而只是盲目地添加。这可能意味着您在同一课程中获得多个同名实例

const organizeInstructors=函数(讲师){
返回讲师。减少((累积,当前)=>{
//如果累积对象中没有课程,请添加它。
如果(!累计[当前课程])累计[当前课程]=[];
//添加当前名称。
累计[current.course].push(current.name);
//返回下一次迭代的累积对象。
累积收益;
}, {});
}
console.log(organizeInstructors([{
姓名:“塞缪尔”,
课程:“iOS”
},
{
姓名:“维多利亚”,
课程:“网络”
},
{
姓名:“卡里姆”,
课程:“网络”
},
{
姓名:“唐纳德”,
课程:“网络”
}
]));这将使用该方法

请注意,这不会检查值是否已经存在于课程数组中,而只是盲目地添加。这可能意味着您在同一课程中获得多个同名实例

const organizeInstructors=函数(讲师){
返回讲师。减少((累积,当前)=>{
//如果累积对象中没有课程,请添加它。
如果(!累计[当前课程])累计[当前课程]=[];
//添加当前名称。
累计[current.course].push(current.name);
//返回下一次迭代的累积对象。
累积收益;
}, {});
}
console.log(organizeInstructors([{
姓名:“塞缪尔”,
课程:“iOS”
},
{
姓名:“维多利亚”,
课程:“网络”
},
{
姓名:“卡里姆”,
课程:“网络”
},
{
姓名:“唐纳德”,
课程:“网络”
}

]));我认为他们试图进行代码格式化并添加两个额外的back tick你需要了解
讲师[课程]
讲师之间的区别。课程
我认为他们试图进行代码格式化并添加两个额外的back tick你需要了解
讲师[课程]之间的区别
讲师。当然
你好,马克鲍尔,非常感谢!嗨,MarkCBall,非常感谢你!你可以