Javascript 筛选关键点上的对象

Javascript 筛选关键点上的对象,javascript,Javascript,我使用组CONCAT从SQL获取数据。 我最终想要实现的是预期的输出。我尝试使用过滤器和映射,但无法实现所需的输出。 我们如何实现这一点,以便获得serviceObj包含对象数组 预期产量 var a = [ { "id": 1, "membership_name": "basic", "membership_price": "10", "serviceObj" :[ {id :7, name:Multi

我使用组CONCAT从SQL获取数据。 我最终想要实现的是预期的输出。我尝试使用过滤器和映射,但无法实现所需的输出。 我们如何实现这一点,以便获得
serviceObj
包含对象数组

预期产量

var a = [
    {
        "id": 1,
        "membership_name": "basic",
        "membership_price": "10",
        "serviceObj" :[
          {id :7, name:Multi-City Artisan Availability}, {id:3,name:Hair and/or Makeup},{id:6,Online Booking. Easy},{id:5, name:On Location. Whenever. Wherever},{id:4,name:2 Services / Month with Rollover}
       ],
} ..so on for 2 ids ]
输入

var a = [
    {
        "id": 1,
        "membership_name": "basic",
        "membership_price": "10",
        "services_id": "7;3;6;5;4",
        "services_names": "Multi-City Artisan Availability;Hair and/or Makeup;Online Booking. Easy;On Location. Whenever. Wherever;2 Services / Month with Rollover"
    },
    {
        "id": 2,
        "membership_name": "Elite",
        "membership_price": "123",
        "services_id": "10;9;12;8;11",
        "services_names": "2 Services / Month with Rollover;Hair and/or Makeup;Online Booking. Easy;Personal Makeup Shopper (1 appt);On Location. Whenever. Wherever."
    },
    {
        "id": 3,
        "membership_name": "Exclusive",
        "membership_price": "169",
        "services_id": "14;17;13;20;16;19;15;18",
        "services_names": "2 Services / Month with Rollover;Online Booking. Easy;Hair and/or Makeup;Choice of Updo / Downdo Hairstyle;On Location. Whenever. Wherever;Faux Lashes & Airbrush Included;Personal Makeup Shopper (1 appt);Multi-City Artisan Availability"
    },
    {
        "id": 4,
        "membership_name": "Life",
        "membership_price": "7999.20",
        "services_id": "21;30;25;29;24;27;23;26",
        "services_names": "VALID FOR LIFE!;Personalized Customer Care;Online Booking. Easy.;Choice of Updo / Downdo Hairstyle;On Location. Whenever. Wherever.;Faux Lashes & Airbrush Included;Hair and/or Makeup **;Multi-City Artisan Availability"
    }
];

var obj = {};
var k = [];
l = a.map(n=>{

  var obj = {
    id : n.id,
    membership_name : n.membership_name,
    membership_price : n.membership_price,
    service : [
      {services_id : n.services_id,services_names:n.services_names }
      ]
  }
  k.push(obj);
})

console.log(JSON.stringify(k));

对于
a
数组中的每个项目,
array.prototype.split()
services\u id
services\u name
字段位于
。假设它们具有相同的长度,并行迭代它们,并基于两个数组中的字段创建新的对象数组

var a=[
{
“id”:1,
“会员名称”:“基本”,
“会员价格”:“10”,
“服务id”:“7;3;6;5;4”,
“服务名称”:“多城市工匠可用性;头发和/或化妆;在线预订。简单;现场。随时随地;每月2次服务,带展期”
},
{
“id”:2,
“会员名称”:“精英”,
“会员价格”:“123”,
“服务id”:“10;9;12;8;11”,
“服务名称”:“2项服务/月,展期;头发和/或化妆;在线预订。简单;个人化妆购物者(1件);现场。无论何时何地。”
},
{
“id”:3,
“会员名称”:“独家”,
“会员价格”:“169”,
“服务id”:“14;17;13;20;16;19;15;18”,
“服务名称”:“2项服务/月,带展期;在线预订。简单;发型和/或化妆;上装/下装发型选择;现场。随时随地;包括人造睫毛和喷枪;个人化妆购物者(1件);多城市工匠可用”
},
{
“id”:4,
“会员名称”:“生活”,
“会员价格”:“7999.20”,
“服务id”:“21;30;25;29;24;27;23;26”,
“服务名称”:“终身有效”;“个性化客户服务”;在线预订。简单;可选择上装/下装发型;现场。随时随地;包括假睫毛和喷枪;头发和/或化妆**;可供多城市工匠使用”
}
];
变量输出=a.map((项目)=>{
var id=item.services_id.split(“;”);
var names=item.services_names.split(“;”);
var对象=[];
id.forEach((id,索引)=>{
objects.push({
id:parseInt(id),
名称:名称[索引]
});
});
返回{
“id”:项目id,
“会员名称”:item.membership\u name,
“会员价格”:item.membership\u price,
“serviceObj”:对象
}
});

控制台日志(输出)
如果拆分ID和名称,则可以将它们映射到
上,以创建一个
serviceObj
数组,您可以将该数组添加到返回的对象数组中:

const out = a.map(({ id, membership_name, membership_price, services_id, services_names }) => {
  const ids = services_id.split(';');
  const names = services_names.split(';');
  const serviceObj = ids.map((id, i) => ({ id: Number(id), name: names[i]}));
  return { id, membership_name, membership_price, serviceObj }
});