Добавить новый объект в {} в массив - PullRequest
0 голосов
/ 17 июня 2020

Я хочу отредактировать свой код, чтобы добавить новый объект {} в мою группировку массивов по идентификатору, мой код добавляет объект к моему старому объекту: мой код и результат:

result = {
  "field": [{
    "id": "11",
    "name": "name",
    "email": "email"
  }, {
    "id": "11",
    "name": "name",
    "email": "email"
  }, {
    "id": "1234",
    "name": "name",
    "email": "email"
  }]
}
results = result.field;
groups = {};
for (var i in results) {
  var groupName = results[i].id;
  if (!groups[results[i].id]) {
    groups[groupName] = [];
  }
  groups[groupName].push(results[i].name);
  groups[groupName].push(results[i].email);
}
console.log(groups);

Я хочу, чтобы результат был таким:

 {"1234": [
        {"name" : "name",
        "email":"email"},
        {"name":"name",
        "email":"email"}],
     "11":[{"name":"name",
        "email":"email"}]}

** Я использую wso2, поэтому я не могу использовать какой-либо метод, например: reduce. Спасибо ..

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Наконец-то делаю, ответ:

result = {
  "field": [{
    "id": "11",
    "name": "asma",
    "email": "asma@hotmail"
  }, {
    "id": "11",
    "name": "jone",
    "email": "jone@hotmail"
  }, {
    "id": "1234",
    "name": "jak",
    "email": "jak@hotmail"
  }]
}
results = result.field;
groups = {};
for (var i in results) {
  var groupName = results[i].id;
  if (!groups[results[i].id]) {
    groups[groupName] = [];
  }
 groups[groupName].push({"name" :results[i].name,"email":results[i].email})
}
console.log(groups);
0 голосов
/ 17 июня 2020

Вы можете просто использовать метод reduce():

var object = { "field": [  {"id":"11","name":"name","email":"email"},{"id":"11","name":"name","email":"email"},{"id":"1234","name":"name","email":"email"}]};

var result = object.field.reduce((acc, {id, ...rest})=>{
    acc[id] = acc[id] || [];
    acc[id].push({...rest});
    return acc;
},{});

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