如何使多ID数组对象成为一体 [英] How to make multi id array object to all in one

查看:71
本文介绍了如何使多ID数组对象成为一体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在与一些wordpress项目一起工作,该项目关于按术语类别搜索巡回项目,而我使用jQuery ui catcomplete由我的数组完成,而catcomplete不支持,所以我想将数组转换为JSON对象 现在这是我的数组:

I working with some wordpress project this project about searching tour by terms category and this i use jQuery ui catcomplete by my array is not support by catcomplete so i want to convert my array to JSON object This my array now :

  1:
   1:{label: "Namibia", category: "Afrika"}
   2:{label: "Sydafrika", category: "Afrika"}
   3:{label: "Tanzania", category: "Afrika",}
   4:{label: "Madagaskar", category: "Afrika"}
 2:
   1:{label: "Colombia", category: "Amerika"}
   2:{label: "Kuba", category: "Amerika"}
   3:{label: "Private: Peru", category: "Amerika"}
   4:{label: "Panama", category: "Amerika"}
   5:{label: "Costa Rica", category: "Amerika"}
 3:
   1:{label: "Private: Södra Indien", category: "Asien"}
   2:{label: "Indonesien", category: "Asien"}
   3:{label: "Filippinerna", category: "Asien"}
   4:{label: "Indien", category: "Asien"}
   5:{label: "Kambodja", category: "Asien"}
   6:{label: "Vietnam", category: "Asien"}
   7:{label: "Myanmar", category: "Asien"}
   8:{label: "Sri Lanka", category: "Asien"}
   9:{label: "Thailand", category: "Asien"}

我希望它像这样

data:{label: "Namibia", category: "Afrika"},
     {label: "Sydafrika", category: "Afrika"},
     {label: "Tanzania", category: "Afrika",},
     {label: "Madagaskar", category: "Afrika"},
     {label: "Colombia", category: "Amerika"},
     {label: "Kuba", category: "Amerika"},
     {label: "Private: Peru", category: "Amerika"},
     {label: "Panama", category: "Amerika"},
     {label: "Costa Rica", category: "Amerika"},
     {label: "Private: Södra Indien", category: "Asien"},
     {label: "Indonesien", category: "Asien"},
     {label: "Filippinerna", category: "Asien"},
     {label: "Indien", category: "Asien"},
     {label: "Kambodja", category: "Asien"},
     {label: "Vietnam", category: "Asien"},
     {label: "Myanmar", category: "Asien"},
     {label: "Sri Lanka", category: "Asien"},
     {label: "Thailand", category: "Asien"},

谢谢.

推荐答案

您可以使用mapreduceconcat

使用map将对象转换为2维数组.

Use map to convert objects into 2 dimentional array.

使用reduce循环遍历数组,并使用concat

Use reduce to loop thru the array and merge it using concat

let data = {
  1: {
    1: {
      label: "Namibia",
      category: "Afrika"
    },
    2: {
      label: "Sydafrika",
      category: "Afrika"
    },
    3: {
      label: "Tanzania",
      category: "Afrika"
    },
    4: {
      label: "Madagaskar",
      category: "Afrika"
    },
  },
  2: {
    1: {
      label: "Colombia",
      category: "Amerika"
    },
    2: {
      label: "Kuba",
      category: "Amerika"
    },
    3: {
      label: "Private: Peru",
      category: "Amerika"
    },
    4: {
      label: "Panama",
      category: "Amerika"
    },
    5: {
      label: "Costa Rica",
      category: "Amerika"
    },
  },
  3: {
    1: {
      label: "Private: Södra Indien",
      category: "Asien"
    },
    2: {
      label: "Indonesien",
      category: "Asien"
    },
    3: {
      label: "Filippinerna",
      category: "Asien"
    },
    4: {
      label: "Indien",
      category: "Asien"
    },
    5: {
      label: "Kambodja",
      category: "Asien"
    },
    6: {
      label: "Vietnam",
      category: "Asien"
    },
    7: {
      label: "Myanmar",
      category: "Asien"
    },
    8: {
      label: "Sri Lanka",
      category: "Asien"
    },
    9: {
      label: "Thailand",
      category: "Asien"
    },

  }
};

let newData = Object.values(data).map(v => {
  let x = [];
  for (let k in v) x.push(v[k]);
  return x;
}).reduce((c, v) => {
  c = c.concat(v);
  return c;
}, []);

console.log(newData);

您也可以尝试使用较短的版本:

You can also try a shorter version:

let newData = Object.values(data).reduce((c, v) => c.concat(Object.values(v).map(i => i)),[]);

这篇关于如何使多ID数组对象成为一体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆