Javascript ES6 REDUCT方法未返回所需输出

Javascript ES6 REDUCT方法未返回所需输出,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,这是输出(图像1),如果您将从片段1 我想做的是将我的数组缩小到类似于图2中显示的数组 我已经尝试使用lodash\uqby()[代码片段2],但我从日志reduce变量中获得的输出仍然是图像1的输出。如何将我的final数组减少到图像2中的输出 图像1 图像2 片段1 片段2 更新 这是在TypeScript.ts中,而不是在.js中 接口=>[{系:字符串,教授:字符串[]}] 至于请求 这就是我获取数据的地方 [ { department: 'Department

这是输出(图像1),如果您将从片段1

我想做的是将我的数组缩小到类似于图2中显示的数组

我已经尝试使用lodash
\uqby()
[代码片段2],但我从日志
reduce
变量中获得的输出仍然是图像1的输出。如何将我的
final
数组减少到图像2中的输出

图像1

图像2

片段1

片段2

更新

这是在TypeScript
.ts
中,而不是在
.js

接口=>
[{系:字符串,教授:字符串[]}]

至于请求

这就是我获取数据的地方

[
    {
      department: 'Department of Mathematics - INTRAMUROS',
      professors: [
        'Sabino, Lilibeth D.',
        'Department Chair',
 .....
这是我从
final
数组到达之前的代码

const recommend = [];
const final = [];

recommended.forEach((prof) => {
  const find = proffessorDetails.find((collection) => {
    return collection.professors.find((professor) => professor == prof);
  });
  recommend.push(find);
})

const find = recommend.map((collection) => {
  return {
    department: collection.department,
    prof: _.intersection(collection.professors, recommended)
  };
});
final.push(find);

最好使用
地图来进行此操作:

type department = { department: string, professors: string[] };
let mUnique : Map<string, department> = new Map(final.map((obj: department) => <[string, department]>[obj.department, obj]));
let mUniqueArray = [...mUnique.values()]; //or Array.from(mUnique.values());
type department={department:string,professors:string[]};
让mUnique:Map=newmap(final.Map((obj:department)=>[obj.department,obj]);
让mUniqueArray=[…mUnique.values()]//或Array.from(mUnique.values());

最好使用
地图进行此操作:

type department = { department: string, professors: string[] };
let mUnique : Map<string, department> = new Map(final.map((obj: department) => <[string, department]>[obj.department, obj]));
let mUniqueArray = [...mUnique.values()]; //or Array.from(mUnique.values());
type department={department:string,professors:string[]};
让mUnique:Map=newmap(final.Map((obj:department)=>[obj.department,obj]);
让mUniqueArray=[…mUnique.values()]//或Array.from(mUnique.values());

使用
reduce
,您将始终修改相同的对象,然后返回它。提供起始值总是比较容易的(
{}
在本例中)
{}
始终是您的
obj
。要分配唯一值(
item
s),可以将它们分配给
obj[item.department]
。不要忘记在结尾处返回obj

const reduce = Object.values(final.reduce((obj, item) => {
  obj[item.department] = item;
  return obj;
}, {}));

只从简化对象中检索值。

使用
reduce
,您将始终修改同一对象并返回它。提供起始值总是比较容易的(
{}
在本例中)
{}
始终是您的
obj
。要分配唯一值(
item
s),可以将它们分配给
obj[item.department]
。不要忘记在结尾处返回obj

const reduce = Object.values(final.reduce((obj, item) => {
  obj[item.department] = item;
  return obj;
}, {}));

您只需从reduced对象中检索值。

如前所述,您需要提供累加器作为reduce回调的第一个参数。检查此链接:。不确定这是否是您想要的,但此代码将为您提供具有唯一
部门
字段的对象数组

final.reduce((res, item ) => {
    return res.find(({ departament }) => departament === item.departament) ? res : [res, item];
}, [])

正如前面提到的,您需要提供累加器作为第一个参数来减少回调。检查此链接:。不确定这是否是您想要的,但此代码将为您提供具有唯一
部门
字段的对象数组

final.reduce((res, item ) => {
    return res.find(({ departament }) => departament === item.departament) ? res : [res, item];
}, [])


“你总是在reduce函数中返回累加器,这不是你使用
reduce
的方式。我明白了,那么有什么可能是将我的最终数组减少到图2中的输出的最佳方法?”str指出。顺便说一句,你知道如何解决这个问题吗?你总是在reduce函数中返回累加器,这不是你使用
reduce
的方式。我明白了,那么有什么可能是将我的最终数组减少到图2中的输出的最佳方法呢?@str指出。顺便说一句,你知道怎么解决这个问题吗?你好@MinusFor,我在传递map中的final.map时出现了一些lint错误,错误是void[]类型的参数不可赋值。你在使用typescript?@Vadamadafaka,你需要添加正确的类型注释。如果您有对象的类型定义,我可以帮助您。Idk if typescript现在本地支持
Map
。我所能做的就是建议
Map
,但我肯定你会想要更具体的东西。界面是这样的
[{department:string,professors:string[]}]
@Vadamadafaka,好吧,我更新了答案,看看这是否能解决问题。您好@MinusFor,我在通过Map中的final.Map时出现了一些lint错误,错误表明void[]类型的参数不可赋值您使用的是typescript?@Vadamadafaka,您需要添加正确的类型注释。如果您有对象的类型定义,我可以帮助您。Idk if typescript现在本地支持
Map
。我所能做的就是建议
Map
,但我肯定你会想要更具体的东西。界面是这样的
[{系:string,教授:string[]}]
@Vadamadafaka,好吧,我更新了答案,看看这是否解决了问题。您好@Xufox我尝试了这个代码段,但返回值仍然是图像中的输出1@Vadamadafaka这是不可能的。请更新您的问题,并将实际的
final
数组粘贴为纯文本(而不是图像),并将其格式化为代码(
{}
按钮)。此表达式未分配给任何对象,因此您需要将其放入somewhere@MinusFour正确的,我的代码段中没有包含
const reduce=
。您好@Xufox我尝试了这个代码段,但返回值仍然是图像中的输出1@Vadamadafaka这是不可能的。请更新您的问题,并将实际的
final
数组粘贴为纯文本(而不是图像),并将其格式化为代码(
{}
按钮)。此表达式未分配给任何对象,因此您需要将其放入somewhere@MinusFour对,我没有在代码片段中包含
constreduce=