javascript - 如何从数组中创建包含相同字符串的子数组?

标签 javascript arrays grouping sub-array

我有一个像这样的数组:

[
{
    "title": "name",
    "value": ""
},
{
    "title": "version",
    "value": ""
},
{
    "title": "inventory_name",
    "value": ""
},
{
    "title": "inventory_version",
    "value": ""
},
{
    "title": "differed",
    "value": ""
},
{
    "title": "differed_name",
    "value": ""
},
{
    "title": "accept_error_while_reboot",
    "value": ""
},
{
    "title": "setup_check",
    "value": ""
},
{
    "title": "setup_install",
    "value": ""
},
{
    "title": "setup_install_partial",
    "value": ""
},
{
    "title": "params_install",
    "value": ""
},
{
    "title": "params_install_partial",
    "value": ""
},
{
    "title": "results_install_ok",
    "value": ""
},
{
    "title": "results_install_reboot_defered",
    "value": ""
},
{
    "title": "results_install_reboot_immediate",
    "value": ""
},
{
    "title": "results_install_partial_ok",
    "value": ""
},
{
    "title": "results_install_partial_reboot_defered",
    "value": ""
},
{
    "title": "results_install_partial_reboot_immediate",
    "value": ""
}
];

是否可以创建包含相同标题字段字符串的子数组?

例如在本例中,我将:

array1 = [
 {
  "title": "differed",
  "value": ""
 },
 {
  "title": "differed_name",
  "value": ""
 }
]

array2 = [
 {
  "title": "setup_check",
  "value": ""
 },
 {
  "title": "setup_install",
  "value": ""
 },
 {
  "title": "setup_install_partial",
  "value": ""
 }
]

等等...

如果是单个元素,我应该:

[
 {
 "title": "name",
 "value": ""
 }
]

我正在寻找一种通用方法。

我知道我可以将 indexOf('results')filter 函数一起使用,但是我希望是否可以避免硬编码,因为它是并不总是相同的标题。

有什么想法吗?

Fiddle

最佳答案

您可以使用对象对相似的项目进行分组:

var groups = {};

parameter_list.forEach(function(p){ 
   var key = p.title.split('_')[0];
   if(!groups[key]) {
      groups[key] = [];
   }
   groups[key].push(p);
});

工作演示: http://jsfiddle.net/t459o6v1/3/

关于javascript - 如何从数组中创建包含相同字符串的子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912002/

相关文章:

javascript - 如何在 JavaScript 中查找特定数组变量是否为空?

ruby - 如何按特定顺序对 Ruby 中的数组进行排序?

mercurial - 在 Mercurial 中对一组提交进行分组?

javascript - 如何访问对象的值?

arrays - 基于等价性将值分组在一起

r - 获取R中属于公共(public)组的元素的索引

Solr 分组空字段

javascript - JQuery UI - 将 Draggable 附加到 Droppable

javascript - 一次淡入/淡出 DOM 元素列表

Javascript 倒数计时器 + JS 中的 PHP 代码