Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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_Ecmascript 6 - Fatal编程技术网

Javascript 基于属性组合两个数组

Javascript 基于属性组合两个数组,javascript,ecmascript-6,Javascript,Ecmascript 6,我有两个数组 let student = [{ id: "weqwe", name: "john" }, { id: "wqeqweq", name: "doe" }] let details = [ { id: "2qweqweq", name: "larry", oName: "john" }, { id: "231234qa", name: "jacob", oName: "john" }, { id: "wetyrqwte", name: "jane", oNam

我有两个数组

let student = [{ id: "weqwe", name: "john" }, { id: "wqeqweq", name: "doe" }]
let details = [
    { id: "2qweqweq", name: "larry", oName: "john" },
    { id: "231234qa", name: "jacob", oName: "john" },
    { id: "wetyrqwte", name: "jane", oName: "doe" }
]
我需要检查details数组中的每个对象,并将其和student数组进行比较(比较details数组中的oName属性和student数组中的name属性),并且需要添加一个细节数组作为on object属性。还需要删除oName,我在es6中尝试过,但动态创建数组并推送只给出最后一个值,请参见下面的预期输出

let output = [
    {
        id: "weqwe",
        name: "john",
        details: [
            { id: "2qweqweq", name: "larry" },
            { id: "231234qa", name: "jacob" }
        ]
    },
    {
        id: "wqeqweq",
        name: "doe",
        details: [
            { id: "wetyrqwte", name: "jane" }
        ]
    }
]
提前谢谢

试试这个:

let student=[{id:“weqwe”,name:“john”},{id:“wqeqweq”,name:“doe”}]
让详细信息=[
{id:“2qweqweq”,名字:“拉里”,名字:“约翰”},
{id:“231234qa”,姓名:“jacob”,oName:“john”},
{id:“wetyrqwte”,名字:“jane”,名字:“doe”}
];
让输出=[{
id:“weqwe”,
姓名:“约翰”,
详情:[
{id:“2qweqweq”,名字:“larry”},
{id:“231234qa”,姓名:“jacob”}
]
},
{
id:“wqeqweq”,
名称:“能源部”,
详情:[
{id:“wetyrqwte”,名字:“jane”}
]
}
];
让结果=student.map((obj)=>{
obj.details=details.filter(o=>o.oName==obj.name).map({oName,…other})=>other);
返回obj;
});

控制台日志(结果)到目前为止您尝试了什么?让results=details.map(d=>Object.assign({},d,student.map(s=>d.oName==s.name))
我需要检查细节数组中的每个对象,并将其与student数组进行比较
——比较什么?比较对象?或者任何属性?详细信息数组中每个对象的comapare oName可能与学生数组中每个对象的名称重复。为什么删除映射中的属性只需从对象返回oName以外的其他值。没有必要删除oName。删除后有“返回o”property@ZeeshanAfzalSattiYou可以这样做:object.map(({oName,…other})=>other)}
let student = [{id:"weqwe", name:"john"}, {id:"wqeqweq", name:"doe"}]
let details = [
              {id:"2qweqweq", name:"larry", oName:"john"},
              {id:"231234qa", name:"jacob", oName:"john"},
              {id:"wetyrqwte", name:"jane", oName:"doe"}
              ]


let output= student.map(student=> {

  const detailsObj = details.filter(({oName})=>  oName === student.name)
  return {...student, details: detailsObj.map(({oName, ...other})=> other)}
})

console.log(output)