如何在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)代码>