По сути, я только начал изучать карту es6 из-за ее уникальных свойств, и меня немного беспокоят чистые операции.
Например, я часто удаляю свойства из объектов, с которыми я работаю:
function cloneOmit( obj, props ) {
const keys = !Array.isArray(props)
? Object.keys(obj).filter(k => k !== props)
: Object.keys(obj).filter(k => !props.includes(k));
return keys.reduce(
(clone, key) => {
return { ...clone, [key]: obj[key] };
},
{}
);
}
Я переписал это для работы с Картами:
function cloneOmitMap( map, keys ) {
const oldKeys = Array.from(map.keys());
const newKeys = !Array.isArray(keys)
? oldKeys.filter(k => k !== keys)
: oldKeys.filter(k => !keys.includes(k));
return newKeys.reduce((newMap, key) => {
return newMap.set(key, map.get(key));
}, new Map());
}
Это нормально, но я не уверен, что это эффективно или даже лучше.Меня привлекают Карты из-за их итерационных возможностей (Object.keys()
громоздко и уродливо постоянно вызывать), их приверженности вставке заказов и особенно их допустимости любого значения в качестве ключа, но они не кажутся такими же благоприятными для чистых операций, какОбычные объекты:
Например, если я хочу добавить свойство к объекту чисто:
const object = { foo: 'bar' }
const newObject= { ...object, fooFoo: 'barBar' }
Мне интересно, есть ли какие-то операции с картами, которые я не настороженноэто может помочь облегчить работу с ними чисто, или, возможно, даже небольшую служебную библиотеку.Любая помощь приветствуется!