Поиск пар в объекте JavaScript

В основном у меня есть следующий объект JavaScript:

records: [
{
   id: 1,
   name: michael,
   guid: 12345
},
{
   id: 2,
   name: jason,
   guid: 12345
},
{
   id: 3,
   name: fox,
   guid: 54321
},
{
   id: 4,
   name: rachel,
   guid: 54321
}
];

Я хочу найти пары с одним и тем же гидом. Я планирую создать еще один объект, содержащий обе записи. Так будет выглядеть ff:

records: [
    {
       id: 1,
       name: michael,
       guid: 12345,
       id2: 2,
       name2: jason
    },
    {
       id: 3,
       name: fox,
       guid: 54321,
       id2: 4,
       name2: rachel
    }];

Как мне это сделать в JavaScript? или есть какая-то функция, в которой я мог бы объединить их из одного объекта? так что мне не нужно было создавать еще один. Спасибо

Это недействительный JSON

Quentin 14.03.2018 14:31

Невозможно, потому что это не объект JSON.

lin 14.03.2018 14:32

Что делать, если у вас более двух имен? Непрактичный подход к управлению / хранению программируемых данных.

Adam Azad 14.03.2018 14:32
Не существует объекта JSON..
Heretic Monkey 14.03.2018 14:34

Это объект JS или объект JavaScript. В любом случае, взгляните на функции массива filter(), map() и reduce(). Как вы сказали, вы должны публиковать здесь сообщения только в том случае, если все остальное терпит неудачу [s].

Chris G 14.03.2018 14:35
var JSObject = [ { "id": 1, "name": "michael", "guid": 12345 }, { "id": 2, "name": "jason", "guid": 12345 }, { "id": 3, "name": "fox", "guid": 54321 }, { "id": 4, "name": "rachel", "guid": 54321 } ]
mplungjan 14.03.2018 14:35

Нет, вы действительно хотите получить такой результат? Потому что, если вы просто хотите сгруппировать по guidответ уже там ...

Heretic Monkey 14.03.2018 14:38

И лучшим подходом было бы объединение по руководству: { "12345": [{ "id": 1, "name": "michael" }, { "id": 2, "name": "jason" } ], "54321":[{ "id": 3, "name": "fox"}, { "id": 4, "name": "rachel" }] }

mplungjan 14.03.2018 14:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
70
2

Ответы 2

Вы хотите сначала обратиться к своему синтаксису. строки должны быть заключены в кавычки. вы не можете назначить переменную с помощью ':', необходимо использовать '='. Есть несколько способов подойти к этому, вот пара. В следующий раз лучше всего опубликовать код, который вы уже пробовали, показать, что вы пытаетесь учиться, а не просто получить ответ.

var records = [{
    id: 1,
    name: 'michael',
    guid: 12345
  },
  {
    id: 2,
    name: 'jason',
    guid: 12345
  },
  {
    id: 3,
    name: 'fox',
    guid: 54321
  },
  {
    id: 4,
    name: 'rachel',
    guid: 54321
  }
];

// vanilla js
var groups = {};
records.forEach(function(obj) {
  if (!groups[obj.guid]) {
    groups[obj.guid] = [obj];
  } else {
    groups[obj.guid].push(obj);
  }
});

// lodash
var lo_groups = _.groupBy(records, 'guid');

console.info(groups, lo_groups);

Это даст вам уникальные записи

var recrds = [
{
   "id": 1,
   "name": "michael",
   "guid": 12345
},
{
   "id": 2,
   "name": "jason",
   "guid": 12345
},
{
   "id": 3,
   "name": "fox",
   "guid": 54321
},
{
   "id": 4,
   "name": "rachel",
   "guid": 54321
}
];

function printRecords(){
  let unique = [...new Set(recrds.map(item => item.guid))];
  return unique;
}

Другие вопросы по теме