Доступ к объектам и массивам внутри объекта Map в JavaScript - PullRequest
1 голос
/ 19 апреля 2020

Я моделирую базу данных с объектом Map и храню данные, где ключом является UserId, а значением является объект, содержащий поля, которые также могут быть объектом или массивом. Когда мне нужно, например, добавить sh новых данных в массив внутри, какой будет наилучший курс действий, если таковой вообще будет? В настоящее время элементы ключа / значения карты имеют следующий формат:


   'someUserID', // Key

     // Value as object under here:

     {
       id: 'Marty',  
       password: // A hashed password as a String,
       friends: [Array],
       posts: [Array]
     }

Если я хочу добавить sh новых элементов в поле сообщений, я должен создать массив из всей пары ключ / значение ПУ sh туда, где мне нужно, а затем использовать .set, чтобы вернуть модификацию обратно в объект карты? Есть ли какой-нибудь умный способ сделать это?

Заранее спасибо! (Да, я довольно новичок в этом вопросе ... :))

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020
const db = { 
             userId: { id: 'Marty',  
                     password: password
                     friends: [Array],
                     posts: [Array]
                    },

             }


   const values = db[userId]
    values.posts.push("new post")

Вы можете получить значение, используя ключ userId, и возвращаемое значение может быть передано так же, как обычный массив

0 голосов
/ 19 апреля 2020

Я вижу, вы упоминаете "Карта", как в объекте карты ES6. Я не понимаю, почему вам нужно использовать Map, достаточно простого JS объекта.

Вот пример манипулирования массивами в простом объекте JS,

const db = {
  userId: {
    id: 'Marty',
    posts: ['My first post!'],
  },
};

db['userId'].posts.push('My second post!');

console.log(db);

Аналогично, вот пример манипулирования объектами в простом JS объекте,

const db = {
  userId: {
    id: 'Marty',
    contact: {
      email: 'martymcfly@gmail.com',
    },
  },
};

db['userId'].contact.phoneNumber = '8527107655';

console.log(db);

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

let db = new Map();

db.set('userId', {
  id: 'Marty',
  posts: ['My first post!'],
  contact: {
    email: 'martymcfly@gmail.com',
  },
});

db.get('userId').posts.push('My second post!');

db.get('userId').contact.phoneNumber = '8527107655';

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