Javascript 按对象中的值将大数组排序为小数组

Javascript 按对象中的值将大数组排序为小数组,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个大数组,看起来像这样: let arr = [{ 'name': '1', 'val': '12' },{ 'name': '4', 'val': '52' }, { 'name': '11', 'val': '15' }, { 'nam

我有一个大数组,看起来像这样:

let arr = [{
           'name': '1',
           'val': '12'
          },{
           'name': '4',
           'val': '52'
          },
          {
           'name': '11',
           'val': '15'
          },
          {
           'name': '4',
           'val': '33'
          },
          ...]
我希望找到所有具有相同名称值的对象,并将它们放入单独的数组中。
另外,我不知道数组中可能的名称值。

您可以轻松地按名称分组,以获得所需的名称。下面是一个相当通用的函数,可以根据指定的属性将任何对象数组分组到一个映射。然后简单地把它做成一个数组,就完成了

函数grouparr,属性togroupby{ 返回arr.reduceFunction A、b{ 返回a.setb[propertyToGroupBy],a.getb[propertyToGroupBy]| |[]concatb; },新地图; } const map=grouparr,‘name’; console.logArray.frommap; 设arr=[{ “名称”:“1”, “val”:“12” }, { “名称”:“4”, ‘val’:‘52’ }, { “名称”:“11”, “val”:“15” }, { “名称”:“4”, “val”:“33” } ];
可以根据对象累加器中的名称对数组进行分组。然后使用Object.values可以获得所有值

设arr=[{'name':'1','val':'12'},{'name':'4','val':'52'},{'name':'11','val':'15'},{'name':'4','val':'33'}, 结果=Object.valuesarr.reducer,o=>{ r[o.name]=r[o.name]| |[]; r[o.name].pusho; 返回r; },{}; console.logresult 设arr=[{'name':'1','val':'12'},{'name':'4','val':'52'},{'name':'11','val':'15'},{'name':'4','val':'33'}]; 设groups=arr.reduceobj,el=>{…obj[el.name]:[…obj[el.name]| |[],el]},{}; 控制台。日志组 使用reduce分组并将输出映射为数组:

let arr = [{'name': '1','val': '12'},{'name': '4','val': '52'}, {'name': '11','val': '15'},{'name': '4','val': '33'}];

// group object by same name
const dataObj = arr.reduce((all, {name, val}) => {

    if (!all.hasOwnProperty(name)) all[name] = [];
    all[name].push({name, val});
    return all;

}, {});

// map out the result into an array
const result = Object.keys(dataObj).map(k => (dataObj[k]));

console.log(result);

您的预期输出是什么?@AnkitAgarwal将同名对象的数组分隔开来。@VladimirHumeniuk实际输出值是什么?@AnkitAgarwal是的,我只想找到同名对象并将它们放入新数组中。