Переберите объект, чтобы создать новый - PullRequest
2 голосов
/ 02 мая 2020

Это данные, которые я получаю, которыми я хочу манипулировать

(Это только фрагмент всего объекта)

{
  A169: { t: 's', v: 'Umer', r: '<t>Umer</t>', h: 'Umer', w: 'Umer' },
  B169: { t: 's', v: 'Adnan', r: '<t>Adnan</t>', h: 'Adnan', w: 'Adnan' },
  C169: { t: 'asd', v: 'asd', r: 'asd' },
  D169: {
    t: 's',
    v: 'umer@asd.net',
    r: '<t>umer@asd.net</t>',
    h: 'umer@asd.net',
    w: 'umer@asd.net'
  },
  A170: { t: 's', v: 'Vitor', r: '<t>Vitor</t>', h: 'Vitor', w: 'Vitor' },
  B170: { t: 's', v: 'HAZIN', r: '<t>HAZIN</t>', h: 'HAZIN', w: 'HAZIN' },
  C170: {
    t: 's',
    v: 'NEUROBOTS',
    r: '<t>NEUROBOTS</t>',
    h: 'NEUROBOTS',
    w: 'NEUROBOTS'
  },
  D170: {
    t: 's',
    v: 'vitor.asd@asd.com.br',
    r: '<t>vitor.asd@asd.com.br</t>',
    h: 'vitor.asd@asd.com.br',
    w: 'vitor.asd@asd.com.br'
  },
  A171: { t: 's', v: 'Ziv', r: '<t>Ziv</t>', h: 'Ziv', w: 'Ziv' },
  B171: {
    t: 's',
    v: 'Lautman',
    r: '<t>Lautman</t>',
    h: 'Lautman',
    w: 'Lautman'
  },
  C171: {
    t: 's',
    v: 'BreezoMeter',
    r: '<t>BreezoMeter</t>',
    h: 'BreezoMeter',
    w: 'BreezoMeter'
  },
  D171: {
    t: 's',
    v: 'zivl@asd.com',
    r: '<t>zivl@asd.com</t>',
    h: 'zivl@asd.com',
    w: 'zivl@asd.com'
  }
}

И я ищу формат это так:

[
  {
    A169: { t: 's', v: 'Umer', r: '<t>Umer</t>', h: 'Umer', w: 'Umer' },
    B169: { t: 's', v: 'Adnan', r: '<t>Adnan</t>', h: 'Adnan', w: 'Adnan' },
    C169: { t: 'asd', v: 'asd', r: 'asd' },
    D169: {
    t: 's',
    v: 'umer@asd.net',
    r: '<t>umer@asd.net</t>',
    h: 'umer@asd.net',
    w: 'umer@asd.net'
  },
  {
    A170: { t: 's', v: 'Vitor', r: '<t>Vitor</t>', h: 'Vitor', w: 'Vitor' },
    B170: { t: 's', v: 'HAZIN', r: '<t>HAZIN</t>', h: 'HAZIN', w: 'HAZIN' },
    C170: {
    t: 's',
    v: 'NEUROBOTS',
    r: '<t>NEUROBOTS</t>',
    h: 'NEUROBOTS',
    w: 'NEUROBOTS'
  },
    D170: {
    t: 's',
    v: 'vitor.asd@asd.com.br',
    r: '<t>vitor.asd@asd.com.br</t>',
    h: 'vitor.asd@asd.com.br',
    w: 'vitor.asd@asd.com.br'
   },
  },
]

И так далее ...

Как вы можете заметить, шаблон заключается в группировке каждой буквы "A, B, C, D" в объектах. которые служат индексами массива

До сих пор я пробовал что-то подобное, не получая желаемый вывод

const arrayToGroup = [];

let firstName;
let lastName;
let company;
let email;

for (let [key, value] of Object.entries(filtered)) {
  if (key.indexOf("A") > -1) {
    firstName = value.v;
  }

  if (key.indexOf("B") > -1) {
    lastName = value.v;
  }

  if (key.indexOf("C") > -1) {
    company = value.v;
  }

  if (key.indexOf("D") > -1) {
    email = value.v;
  }
  arrayToGroup.push({
    firstName,
    lastName,
    company,
    email,
  });
}

console.log(arrayToGroup);

ВЫХОД:

[
  {
    firstName: 'Abbas',
    lastName: undefined,
    company: undefined,
    email: undefined
  },
  {
    firstName: 'Abbas',
    lastName: 'AL ASMAR',
    company: undefined,
    email: undefined
  },
  {
    firstName: 'Abbas',
    lastName: 'AL ASMAR',
    company: 'QALEB STUDIO',
    email: undefined
  },
  {
    firstName: 'Abbas',
    lastName: 'AL ASMAR',
    company: 'QALEB STUDIO',
    email: 'abbas@asd.com'
  },
  {
    firstName: 'Abdourazack',
    lastName: 'AL ASMAR',
    company: 'QALEB STUDIO',
    email: 'abbas@asd.com'
  },
  {
    firstName: 'Abdourazack',
    lastName: 'ALI WABERI',
    company: 'QALEB STUDIO',
    email: 'abbas@asd.com'
  },
  {
    firstName: 'Abdourazack',
    lastName: 'ALI WABERI',
    company: 'GREENTECH',
    email: 'abbas@asd.com'
  },
  {
    firstName: 'Abdourazack',
    lastName: 'ALI WABERI',
    company: 'GREENTECH',
    email: 'asd@gmail.com'
  }, ...

1 Ответ

1 голос
/ 02 мая 2020

Сначала вы можете получить все ключи объекта, затем вы можете уменьшить их и проверить, является ли текущая буква «А», если это так, создать новый объект с этой парой ключ / объект и положить sh его в аккумулятор. , В противном случае добавьте другие пары ключ / объект во вновь созданный объект:

let object = {};
Object.keys(o).reduce((p, c) => {
  if (c[0] !== "A") {
    object[c] = o[c];
  } else {
    object = { [c]: o[c] };
    p.push(object);
  }
  return p;
}, []);

Пожалуйста, проверьте фрагмент ниже:

let o = {
  A169: { t: 's', v: 'Umer', r: '<t>Umer</t>', h: 'Umer', w: 'Umer' },
  B169: { t: 's', v: 'Adnan', r: '<t>Adnan</t>', h: 'Adnan', w: 'Adnan' },
  C169: { t: 'asd', v: 'asd', r: 'asd' },
  D169: {
    t: 's',
    v: 'umer@asd.net',
    r: '<t>umer@asd.net</t>',
    h: 'umer@asd.net',
    w: 'umer@asd.net'
  },
  A170: { t: 's', v: 'Vitor', r: '<t>Vitor</t>', h: 'Vitor', w: 'Vitor' },
  B170: { t: 's', v: 'HAZIN', r: '<t>HAZIN</t>', h: 'HAZIN', w: 'HAZIN' },
  C170: {
    t: 's',
    v: 'NEUROBOTS',
    r: '<t>NEUROBOTS</t>',
    h: 'NEUROBOTS',
    w: 'NEUROBOTS'
  },
  D170: {
    t: 's',
    v: 'vitor.asd@asd.com.br',
    r: '<t>vitor.asd@asd.com.br</t>',
    h: 'vitor.asd@asd.com.br',
    w: 'vitor.asd@asd.com.br'
  },
  A171: { t: 's', v: 'Ziv', r: '<t>Ziv</t>', h: 'Ziv', w: 'Ziv' },
  B171: {
    t: 's',
    v: 'Lautman',
    r: '<t>Lautman</t>',
    h: 'Lautman',
    w: 'Lautman'
  },
  C171: {
    t: 's',
    v: 'BreezoMeter',
    r: '<t>BreezoMeter</t>',
    h: 'BreezoMeter',
    w: 'BreezoMeter'
  },
  D171: {
    t: 's',
    v: 'zivl@asd.com',
    r: '<t>zivl@asd.com</t>',
    h: 'zivl@asd.com',
    w: 'zivl@asd.com'
  }
}

let object = {};
let result = Object.keys(o).reduce((p, c) => {
  if (c[0] !== "A") {
    object[c] = o[c];
  } else {
    object = { [c]: o[c] };
    p.push(object);
  }
  return p;
}, []);

console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...