【发布时间】:2017-06-11 22:11:19
【问题描述】:
我应该实现的功能是
function groupBy(array, callback) { }
该函数将根据回调的返回值对数组进行排序。
一个例子是:
var list = [{id: "102", name: "Alice"}, {id:“205”,姓名:“鲍勃”,标题:“博士”}, {id:“592”,姓名:“Clyde”,年龄:32}];
groupBy(list, function(i) { return i.id; });
返回:
{ “102”:[{id:“102”,名称:“爱丽丝”}], "205": [{id: "205", name: "Bob", title: "Dr."}], “592”:[{id:“592”,姓名:“克莱德”,年龄:32}] }
【问题讨论】:
-
JS 对象不保持顺序。所以你想要的结果也不能保证。 PS:JS中没有关联数组。
-
是否可以存储回调的返回值并将它们作为键存储在我们返回的对象中?
-
完全。只需创建一个新对象并使用该键和值。
-
"函数会根据回调的返回值对数组进行排序" 如果函数是排序的,那为什么叫
groupBy呢?并以你的例子告诉你,你想要分组,而不是排序。请不要将这两个术语混为一谈,因为它们描述的是完全不同的任务。而且您似乎只指其中一个,而不是另一个。 -
所以你必须实现
groupBy,OK。问题是什么?你的问题是什么?目前你只描述你的任务。您既没有提出问题,也没有描述该任务的问题。
标签: javascript object associative-array