В основном у меня есть следующий объект 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.
Что делать, если у вас более двух имен? Непрактичный подход к управлению / хранению программируемых данных.
Это объект JS или объект JavaScript. В любом случае, взгляните на функции массива filter(), map() и reduce(). Как вы сказали, вы должны публиковать здесь сообщения только в том случае, если все остальное терпит неудачу [s].
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 } ]Нет, вы действительно хотите получить такой результат? Потому что, если вы просто хотите сгруппировать по guidответ уже там ...
И лучшим подходом было бы объединение по руководству: { "12345": [{ "id": 1, "name": "michael" }, { "id": 2, "name": "jason" } ], "54321":[{ "id": 3, "name": "fox"}, { "id": 4, "name": "rachel" }] }



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы хотите сначала обратиться к своему синтаксису. строки должны быть заключены в кавычки. вы не можете назначить переменную с помощью ':', необходимо использовать '='. Есть несколько способов подойти к этому, вот пара. В следующий раз лучше всего опубликовать код, который вы уже пробовали, показать, что вы пытаетесь учиться, а не просто получить ответ.
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;
}
Это недействительный JSON