Javascript 如何使用reduce查找元素并构建数组对象?

Javascript 如何使用reduce查找元素并构建数组对象?,javascript,arrays,angular,reduce,Javascript,Arrays,Angular,Reduce,尝试写入逻辑如果对象路径相同,则应在数组中创建一个以“名称”逗号分隔的对象,如何使用reduce实现此任务 main.js var data = [ {id: "param", name: "IGetRefillMultiPlanParam", path: "@combinator-interfaces/dist/drug/GetRefills/GetRefills.Model.ts"} {id: "details", name: "IRefills", path: "@combinator-

尝试写入逻辑如果对象路径相同,则应在数组中创建一个以“
名称”
逗号分隔的对象,如何使用reduce实现此任务

main.js

 var data = [
{id: "param", name: "IGetRefillMultiPlanParam", path: "@combinator-interfaces/dist/drug/GetRefills/GetRefills.Model.ts"}
{id: "details", name: "IRefills", path: "@combinator-interfaces/dist/drug/GetRefills/GetRefills.Model.ts"}
{id: "header", name: "IHeader", path: "@combinator-interfaces/dist/common/Header.Model.ts"}
]

    function buildInterface (data) {
           var interfaceArray = [];
           data.reduce(function(acc,arr){
            var filePath = acc.path.replace('.ts','');
            var imports  = data.map(d => d.name).join(', '); 
                if(acc.path.includes(arr.path)) {
                interfaceArray.push(`import { ${imports} } from '${filePath}';\n\n`);
                }
            });

            return interfaceArray;

       }
预期结果

[
    'import { IGetRefillMultiPlanParam, IRefills} from "@combinator-interfaces/dist/drug/GetRefills/GetRefills.Model"',
    'import { IHeader } from "@combinator-interfaces/dist/common/Header.Model"'
]

您使用的
reduce
错误。看看这个,如果你有任何问题,请提问

const数据=[
{
id:“参数”,
名称:“IGetRefillMultiPlanParam”,
路径:“@combinator interfaces/dist/drug/GetRefills/GetRefills.Model.ts”
},
{
id:“详细信息”,
名称:“IRefills”,
路径:“@combinator interfaces/dist/drug/GetRefills/GetRefills.Model.ts”
},
{
id:“标题”,
姓名:“IHeader”,
路径:“@combinator接口/dist/common/Header.Model.ts”
},
];
函数构建接口(数据){
const parsed=data.reduce((映射,导入)=>{
如果(!map[import.path]){
映射[导入.path]=[];
}
const list=map[importing.path];
list.push(导入.name);
返回图;
}, {});
log('parsed',parsed);
返回Object.entries(已解析).map([importPath,toImport])=>{
从${importPath.replace('.ts','')返回${import.join('',')}}导入${toImport.join(',')};
});
}

日志(构建接口(数据))您的方法有什么问题?你为什么问这个问题?@Andreas它的抛出错误
i Uncaught TypeError:无法读取未定义的属性“path”
我想你还不知道如何使用
reduce
。另外,你能用英语解释一下你的算法吗?你到底想做什么?@slider期望的结果是为了理解我想要实现的目标,我知道我不知道如何减少尝试学习,基本上如果对象具有相同的路径,它应该创建一个导入对象,并在导入中使用名称。是的,我理解问题陈述。但我不确定我是否理解您基于粘贴的代码来解决它的方法。这就是为什么它可能有助于澄清你的高水平英语教学方法。谢谢老板解决了我的问题!你是怎么做到的:)我会弄明白的。再次感谢在这里使用reduce函数的方式对我来说是最常见的。这是将数组转换为某种类型的对象的最可读的方法。