Хранение ключей массива в JavaScript

1

Является ли это возможным решением сохранить массивы с _ids из базы данных mongodb в интерфейсной части? Предположим, что мне нужно поддерживать статус людей с их идентификаторами. Хорошо ли ассоциировать такие вещи:

let arr=[];
arr['5bbaea8847910db52c7c3682']='p';
arr['5b9f6a1fd85effbb8acbd1fe']='a';
console.log(arr['5b9f6a1fd85effbb8acbd1fe']);

или лучше держать такие вещи:

 let arr=[];
 arr.push({
     _id:5bbaea8847910db52c7c3682,
     status:'p'
});

Я боюсь, если такие большие идентификаторы могут привести к проблемам с памятью или к таким вещам. Раньше я был C++ программистом, поэтому, похоже, это не крутая вещь. Можно ли делать такие вещи в JavaScript?

  • 6
    Ваш первый код использует массив как объект. Определенно используйте объект или массив объектов.
  • 0
    Посмотрите этот ответ, чтобы узнать, что на самом деле происходит, когда вы пытаетесь использовать строку в качестве индекса массива: stackoverflow.com/questions/9526860/…
Показать ещё 2 комментария
Теги:

3 ответа

1

Как сказано выше, u может использовать объект объектов:

let data = {};
data[5bbaea8847910db52c7c3682] = {
   status: 'p'
}

Или карта:

let data = new Map();
data.set(5bbaea8847910db52c7c3682, { status: 'p' });
0

В этой ситуации лучше использовать массив объектов (как вы сказали) или просто обычный объект:

let ob = {};
ob['5bbaea8847910db52c7c3682'] = 'p';
ob['5b9f6a1fd85effbb8acbd1fe'] = 'a';

console.log(ob['5b9f6a1fd85effbb8acbd1fe']);
0

Лучше сделать arr как объект вместо массива. Ниже приведен пример создания нового объекта, а также добавление/редактирование его свойства.

let obj = {} // or obj = new Object()
obj['5bbaea8847910db52c7c3682'] = 'p'
obj['5b9f6a1fd85effbb8acbd1fe'] = 'a'
console.log(obj)

Чтобы удалить определенное свойство, просто используйте ключевое слово delete:

let obj = {}
obj['5bbaea8847910db52c7c3682'] = 'p'
delete obj['5bbaea8847910db52c7c3682']
console.log(obj)

если имя свойства является зарезервированным ключевым словом или содержит пробелы или специальные символы, то способ установить/получить значение свойства так же, как set/get on array. Кроме этого, можно использовать точечную нотацию.

let obj = {}

obj.someProperty = 'old value'
obj['someProperty'] = 'new value'

console.log(obj.someProperty) // 'new value'
console.log(obj['someProperty']) // 'new value'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню