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

如何在JavaScript对象中添加重复的关键元素?

如何在JavaScript对象中添加重复的关键元素?,javascript,Javascript,我想使用以下testArray生成以下新数组 新数组↓ let newArray = [ {section:"business",name:["Bob","John"]}, {section:"H&R",name:["Jen","Bobby"]}, ] let test = [ {section:"bu

我想使用以下
testArray
生成以下新数组

新数组↓

    let newArray = [
        {section:"business",name:["Bob","John"]},
        {section:"H&R",name:["Jen","Bobby"]},
    ]
let test = [
    {section:"business",name:"Bob"},
    {section:"business",name:"John"},
    {section:"H&R",name:"Jen"},
    {section:"H&R",name:"Bobby"},
]
测试阵列↓

    let newArray = [
        {section:"business",name:["Bob","John"]},
        {section:"H&R",name:["Jen","Bobby"]},
    ]
let test = [
    {section:"business",name:"Bob"},
    {section:"business",name:"John"},
    {section:"H&R",name:"Jen"},
    {section:"H&R",name:"Bobby"},
]
首先,我尝试使用下面的过滤方法查找一些关键元素

let newArray = test.filter((x:any,i,self)=>
                  self.indexOf(x.section)===i
             )
但此代码输出为[]。 那么,如何编写代码以获得预期的输出呢? 有人帮我吗?

使用
Array.reduce()

let test=[{section:“business”,name:“Bob”},{section:“business”,name:“John”},{section:“H&R”,name:“Jen”},{section:“H&R”,name:“Bobby”}];
让newArray=test.reduce((acc,cur)=>{
如果(根据某些(el=>el.section===cur.section)){
acc.forEach((el,idx)=>{
if(el.section==当前截面){
acc[idx].name.push(cur.name)
}
})
}否则{
cur.name=[cur.name]
附件推送(当前)
}
返回acc
},[])
console.log(newArray)
您可以试试这个

const测试=[{
第节:“业务”,
姓名:“鲍勃”
},
{
第节:“业务”,
姓名:“约翰”
},
{
章节:“H&R”,
姓名:“珍”
},
{
章节:“H&R”,
姓名:“鲍比”
},
];
//收集部分
常量节={};
test.forEach(t=>{
截面[t.截面]=截面[t.截面]| |[];
节[t.section].push(t.name);
});
//将会话转换为数组
const newArray=Object.keys(sections.map)(k=>{
返回{
第k节,
名称:第[k]节
};
});
log(newArray)