javascript - 将组转换为数组 javascript

标签 javascript arrays object filter split

我已经设法根据键值将一个数组分成不同的组。我想要实现的是将这些或多或少的组变成一​​个数组,所以我的组变成了 [[Regio__c],[Categorie__c]] 而不是 {Regio__c:[] ,类别__c:[]}。这与普通的 javascript 没有库。

我试过:return [key].concat.split; 这会返回 undefined。

下面是我的代码片段

var filter = [{
    "Id": "120",
    "arrayPicklist": "Categorie__c"
  }, {
    "Id": "121",
    "arrayPicklist": "Regio__c"
  },
  {
    "Id": "122",
    "arrayPicklist": "Categorie__c"
  }, {
    "Id": "123",
    "arrayPicklist": "Regio__c"
  },
  {
    "Id": "121",
    "arrayPicklist": "Regio__c"
  }
]


function splitArrayByValue(arr, key) {
  var split = {};
  for (var i = 0; i < arr.length; i++) {
    var p = arr[i][key];
    if (!split[p]) {
      split[p] = [];
    }
    split[p].push(arr[i])
  }
  return split;
}


var buckets2 = splitArrayByValue(filter, 'arrayPicklist');

console.log(buckets2);

最佳答案

您快完成了,您需要获取值。另一种方法是使用函数 Object.values

var filter = [{    "Id": "120",    "arrayPicklist": "Categorie__c"  }, {    "Id": "121",    "arrayPicklist": "Regio__c"  },  {    "Id": "122",    "arrayPicklist": "Categorie__c"  }, {    "Id": "123",    "arrayPicklist": "Regio__c"  },  {    "Id": "121",    "arrayPicklist": "Regio__c"  }]

function splitArrayByValue(arr, key) {
  var split = {};
  for (var i = 0; i < arr.length; i++) {
    var p = arr[i][key];
    if (!split[p]) {
      split[p] = [];
    }
    split[p].push(arr[i])
  }
  return Object.values(split);
}


var buckets2 = splitArrayByValue(filter, 'arrayPicklist');

console.log(buckets2);

您可以使用函数 reduce 进行分组,然后使用函数 Object.values 获得所需的输出。

var filter = [{"Id":"120","arrayPicklist":"Categorie__c"},{"Id":"121","arrayPicklist":"Regio__c"},{"Id":"122","arrayPicklist":"Categorie__c"},{"Id":"123","arrayPicklist":"Regio__c"},{"Id":"121","arrayPicklist":"Regio__c"}];

var result = Object.values(filter.reduce((a, {Id, arrayPicklist}) => {
  (a[arrayPicklist] || (a[arrayPicklist] = [])).push({Id, arrayPicklist});      
  return a;
}, {}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将组转换为数组 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49456250/

相关文章:

javascript - 从给定的对象中获取数组对象字符串

javascript - List<T> 到 Javascript 数组

javascript - 根据属性值隐藏div?

javascript - Vue js 如何从模板 Datetimepicker 获取格式化值

python - 如何在numpy中的二维矩阵中随机采样

java - 寻求有关实现堆数据结构的帮助

javascript - 使用 JS 实现 cookie 来识别回访者

arrays - PostgreSQL - 左连接数组的最后一项

python - 如何在 __init__ 上创建 __len__ 函数?

javascript - 对象与原始对象