Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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 ES6按相同内容排序_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript ES6按相同内容排序

Javascript ES6按相同内容排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,当我在对象数组上使用时,您好 const myArray = [{id: "C", grade: "bad", name: "John"}, {id: "A", grade: "good", name: "Peter"}, {id: "A", grade: "good", name: "Lucia"}, {id: "B", grade: "average", name: "Thomas"}] 此函数 const groupedReactions = myArray.reduce( (ent

当我在对象数组上使用时,您好

const myArray = [{id: "C", grade: "bad", name: "John"},
{id: "A", grade: "good", name: "Peter"},
{id: "A", grade: "good", name: "Lucia"},
{id: "B", grade: "average", name: "Thomas"}]
此函数

const groupedReactions = myArray.reduce(
  (entryMap, e) => entryMap.set(e.id, [...(entryMap.get(e.id) || []), e]),
  new Map()
);
我能到这里

Map {
 'A' => [ { id: 'A', grade: 'good', name: 'Peter' }, { id: 'A', grade: 'good', name: 'Lucia' } ],
 'B' => [ { id: 'B', grade: 'average', name: 'Thomas' } ],
 'C' => [ { id: 'C', grade: 'bad', name: 'John' } ] }
但我希望看到这个输出

{
  "A": [{name:"Peter"},{name:"Lucia"}],
  "B": [{name:"Thomas"}], 
  "C": [{name:"John"}]
}
你能帮我修改这个函数吗? 还是我应该用一个新的?
谢谢

使用rest语法(
)解构对象,只获取所需的属性。将地图转换为具有
对象的对象。fromEntries()

constmyarray=[{“id”:“C”,“grade”:“bad”,“name”:“John”},{“id”:“A”,“grade”:“good”,“name”:“Peter”},{“id”:“A”,“grade”:“good”,“name”:“Lucia”},{“id”:“B”,“grade”:“average”,“name”:“Thomas”}]
const groupedReactions=Object.fromEntries(myArray.reduce(
(entryMap,{id,grade,…e})=>entryMap.set(id,[…(entryMap.get(id)| |[]),e]),
新地图()
))

log(groupedReactions)
解构对象,并使用rest语法只获取所需的属性(
)。将地图转换为具有
对象的对象。fromEntries()

constmyarray=[{“id”:“C”,“grade”:“bad”,“name”:“John”},{“id”:“A”,“grade”:“good”,“name”:“Peter”},{“id”:“A”,“grade”:“good”,“name”:“Lucia”},{“id”:“B”,“grade”:“average”,“name”:“Thomas”}]
const groupedReactions=Object.fromEntries(myArray.reduce(
(entryMap,{id,grade,…e})=>entryMap.set(id,[…(entryMap.get(id)| |[]),e]),
新地图()
))

console.log(groupedReactions)
Hmmm。。。用“
”A“:[“彼得”,“露西亚”],
代替“
”A“:[{name:“彼得”},{name:“露西亚”}],
?您将找到两种解决方案:

constmyarray=[{id:“C”,grade:“bad”,name:“John”},
{id:“A”,等级:“好”,名字:“彼得”},
{id:“A”,等级:“好”,名字:“Lucia”},
{id:“B”,年级:“平均”,姓名:“托马斯”}]
const note={};
myArray.forEach((学生)=>{
const key=student.id
如果(!注意[键])
注意[键]=[]
注意[key].push(student.name)//或:.push({name:student.name})
});

控制台日志(注)Hmmm。。。用“
”A“:[“彼得”,“露西亚”],
代替“
”A“:[{name:“彼得”},{name:“露西亚”}],
?您将找到两种解决方案:

constmyarray=[{id:“C”,grade:“bad”,name:“John”},
{id:“A”,等级:“好”,名字:“彼得”},
{id:“A”,等级:“好”,名字:“Lucia”},
{id:“B”,年级:“平均”,姓名:“托马斯”}]
const note={};
myArray.forEach((学生)=>{
const key=student.id
如果(!注意[键])
注意[键]=[]
注意[key].push(student.name)//或:.push({name:student.name})
});

控制台日志(注)
wau,这看起来很好,只是一个问题,如果我将对象简化为“name”而不是“grade”?我现在有成绩了:/I我必须逐行理解代码:使用
grade
调整开关
name
,因为出现在
..
之前的属性将不包括在输出对象中(
e
)。更新了答案。我们将
id
grade
解构出来,并将其余部分收集到一个对象中(
e
)。如果
id
下没有值,则将其设置为空数组。始终将当前的
e
推送到其原始
id
property.wau下的数组中,这看起来很好。如果我将对象简化为“name”而不是“grade”,这看起来很好?我现在有成绩了:/I我必须逐行理解代码:使用
grade
调整开关
name
,因为出现在
..
之前的属性将不包括在输出对象中(
e
)。更新了答案。我们将
id
grade
解构出来,并将其余部分收集到一个对象中(
e
)。如果
id
下没有值,则将其设置为空数组。始终将当前
e
推送到其原始
id
属性下的数组中。这看起来最容易理解。。。是的,我可以考虑只有一系列名称:“现在我想继续和获得字符串:“好X 2(彼得,露西亚)-平均(托马斯)-坏(约翰)”我认为我的逻辑是坏的,因为这是更好地产生这个代码> {“好”:[彼得],“露西亚”],“平均”:[“托马斯”],“坏”:[“Field]”}
用你的代码做什么容易你可以像这样转换密钥:
const convert={A:“好”,B:“平均”,C:“坏”}然后:
const key=convert[student.id]
这看起来最容易理解。。。是的,我可以考虑只有一系列名称:“现在我想继续和获得字符串:“好X 2(彼得,露西亚)-平均(托马斯)-坏(约翰)”我认为我的逻辑是坏的,因为这是更好地产生这个代码> {“好”:[彼得],“露西亚”],“平均”:[“托马斯”],“坏”:[“Field]”}
用你的代码做什么容易你可以像这样转换密钥:
const convert={A:“好”,B:“平均”,C:“坏”}然后:
const key=convert[student.id]