irc_web/.svn/pristine/24/2487bb34661dffa9396afa1b650...

34 lines
1.1 KiB
Plaintext

/**
* Remove invalid tags from a metadata and return a new object.
*
* At this time it is only removing tags that has `null` or `undefined` values
* which is our main goal because that breaks when `naturalizeDataset(...)` is
* called.
*
* Validating the tag id using regex like /^[a-fA-F0-9]{8}$/ make it run
* +50% slower and looping through all characteres (split+every+Set or simple
* FOR+Set) double the time it takes to run. It is currently taking +12ms/1k
* images on average which can change depending on the machine.
*
* @param srcMetadata - source metadata
* @returns new metadata object without invalid tags
*/
function removeInvalidTags(srcMetadata) {
// Object.create(null) make it ~9% faster
const dstMetadata = Object.create(null)
const tagIds = Object.keys(srcMetadata)
let tagValue
tagIds.forEach((tagId) => {
tagValue = srcMetadata[tagId]
if (tagValue !== undefined && tagValue !== null) {
dstMetadata[tagId] = tagValue
}
})
return dstMetadata
}
export { removeInvalidTags as default, removeInvalidTags }