Добавить объекты из массива JSON в массив JavaScript с переназначенными ключами - PullRequest
0 голосов
/ 11 января 2020

Я получил следующее json, возвращенное из ajax запроса

[
  {
    "id": "1",
    "task": "eat pizza",
    "username": "all"
  },
  {
    "id": "2",
    "task": "drink soda",
    "username": "all"
  }
]

Я пытаюсь добавить определенные c фрагменты данных из json в существующий массив js ,

this.$todoData2 = [
    {
        'id': '5',
        'text': 'Cheese',
        'done': false
    },
]

Мне нужно добавить json идентификатор ключа и соответствующее ему значение - пример: "id": ключ,

Мне нужно добавить json задачу ключа в виде текста с ее соответствующее значение - пример: "текст": ключ

Мне нужно добавить "готово": "ложь", чтобы установить так, чтобы конечный результат выглядел так:

this.$todoData2 = [
    { 
        "id": "1",
        "text": "eat pizza",
        'done': false
    }
    { 
        "id": "2",
        "text": "drink soda",
        'done': false
    }
    {
        'id': '5',
        'text': 'Cheese',
        'done': false
    },
]

У меня нет примеры того, что я пробовал, так как я не уверен, с чего начать. Помните, что json может содержать намного больше результатов.

Ответы [ 3 ]

2 голосов
/ 11 января 2020

Вы можете объединить оба массива и затем использовать map.

let arr = [
  {
    "id": "1",
    "task": "eat pizza",
    "username": "all"
  },
  {
    "id": "2",
    "task": "drink soda",
    "username": "all"
  }
]

let todoData2 = [
    {
        'id': '5',
        'text': 'Cheese',
        'done': false
    },
]

todoData2 = todoData2.concat(arr).map( obj => ({ id:obj.id, text:obj.task || obj.text , done:false  }) );
console.log(todoData2)
2 голосов
/ 11 января 2020

Используйте .forEach() для перебора массива 'updates', а деструктурирование пар ключ / значение, которые вы хотите использовать

Создайте свой объект, затем .push() это в массив

const $todoData2 = [
    {'id': '5', 'text': 'Cheese', 'done': false},
];

const update = [
  {"id": "1", "task": "eat pizza", "username": "all"},
  {"id": "2", "task": "drink soda", "username": "all"}
];

update.forEach(({id, task}) => {
  $todoData2.push({
    'id': id,
    'text': task,
    'done': false
  });
});

console.log($todoData2);
1 голос
/ 11 января 2020

Если задача состоит в том, чтобы просто добавлять и переименовывать ключи, это можно сделать так просто:

const newItems = [{"id":"1","task":"eat pizza","username":"all"},{"id":"2","task":"drink soda","username":"all"}],
      existingItems = [{"id":"5","text":"Cheese","done":false}]
      
existingItems.push(...newItems.map(({id,task:text}) => ({id,text,done:false})))
      
console.log(existingItems)
.as-console-wrapper{min-height:100%}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...