JavaScript中按数组属性分组

JavaScript中按数组属性分组,javascript,Javascript,如果我有这样一个数组: var arr = [ { id: 1 , name: "James"}, { id: 2, name: "John"}, { id: 1, name: "Jake"} ] 如何按属性分组,如下所示: { id: 1, name: "James", "Jake" }, { id: 2, name: "John"} 等等。您可以使用lodash groupBy方法完成此任务。请查看u.groupBy文档,网址为 请记住,您确实需要完全安装loda

如果我有这样一个数组:

var arr = [
    { id: 1 , name: "James"},
    { id: 2, name: "John"},
    { id: 1, name: "Jake"}
]
如何按属性分组,如下所示:

{ id: 1, name: "James", "Jake" },
{ id: 2, name: "John"}

等等。

您可以使用lodash groupBy方法完成此任务。请查看u.groupBy文档,网址为


请记住,您确实需要完全安装lodash,您只能安装所需的方法

您可以使用lodash groupBy方法完成此任务。请查看u.groupBy文档,网址为


请记住,您确实需要完全安装lodash,您只能安装所需的方法。通常,当您尝试按单个值分组时,您可以向某种类型的散列中添加内容—可以是javascript对象或映射。因为这些数据类型的键需要是唯一的,所以可以很容易地将它们组合在一起

例如,它使用一个对象在一个键下提取所有ID。然后使用
Object.values()
返回并数组:

var arr=[{id:1,名字:“James”},{id:2,名字:“John”},{id:1,名字:“Jake”}]
让hash=arr.reduce((a,c)=>{
//是传递到reduce的对象
//如果它已经有c.id的键,只需将其推入名称数组
如果(一个[c.id])一个[c.id]['name'].push(c.name)
//如果不是,则为c.id添加一个键并将其设置为对象
//带和id和名称数组
else a[c.id]={id:c.id,name:[c.name]}
归还

},{})/通常,当您试图按单个值进行分组时,会将内容添加到某种类型的散列中—可以是javascript对象或映射。因为这些数据类型的键需要是唯一的,所以可以很容易地将它们组合在一起

例如,它使用一个对象在一个键下提取所有ID。然后使用
Object.values()
返回并数组:

var arr=[{id:1,名字:“James”},{id:2,名字:“John”},{id:1,名字:“Jake”}]
让hash=arr.reduce((a,c)=>{
//是传递到reduce的对象
//如果它已经有c.id的键,只需将其推入名称数组
如果(一个[c.id])一个[c.id]['name'].push(c.name)
//如果不是,则为c.id添加一个键并将其设置为对象
//带和id和名称数组
else a[c.id]={id:c.id,name:[c.name]}
归还

},{}/假设需要一个名称数组,可以使用函数
reduce
id
对名称进行分组

const arr=[{id:1,名字:“James”},{id:2,名字:“John”},{id:1,名字:“Jake”}],
result=Object.values(arr.reduce((a,{id,name})=>{
(a[id]| |(a[id]={id,name:[]})).name.push(name);
返回a;
}, {}));
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
假设需要名称数组,可以使用函数
reduce
id
对名称进行分组

const arr=[{id:1,名字:“James”},{id:2,名字:“John”},{id:1,名字:“Jake”}],
result=Object.values(arr.reduce((a,{id,name})=>{
(a[id]| |(a[id]={id,name:[]})).name.push(name);
返回a;
}, {}));
控制台日志(结果)

.as控制台包装{max height:100%!重要;top:0;}
输出无效!你指的是一个名称数组?你可能指的是
{id:1,name:[“James”,“Jake”]}
?@kshetline-是的,没错。输出无效!你指的是一个名称数组?你可能是指
{id:1,name:[“James”,“Jake”]}
?@kshetline-是的,没错。为什么id必须大于零?@Mark\M我的错!我忘记了从整数到字符串的键/名称转换。为什么ID必须大于零?@Mark\M my bad!我忘记了从整数到字符串的键/名称转换。