function getUnique(arr) {
const acc = {};
for (const el of arr)
acc[el] = acc[el] + 1 || 1;
const res = [];
for (const el of arr)
if (acc[el] === 1)
res.push(el);
return res;
}
$ npm view webpack dependencies engines
dependencies =
{
'@webassemblyjs/ast': '1.9.0',
'@webassemblyjs/helper-module-context': '1.9.0',
'@webassemblyjs/wasm-edit': '1.9.0',
'@webassemblyjs/wasm-parser': '1.9.0',
acorn: '^6.4.1',
ajv: '^6.10.2',
'ajv-keywords': '^3.4.1',
'chrome-trace-event': '^1.0.2',
'enhanced-resolve': '^4.1.0',
'eslint-scope': '^4.0.3',
'json-parse-better-errors': '^1.0.2',
'loader-runner': '^2.4.0',
'loader-utils': '^1.2.3',
'memory-fs': '^0.4.1',
micromatch: '^3.1.10',
mkdirp: '^0.5.3',
'neo-async': '^2.6.1',
'node-libs-browser': '^2.2.1',
'schema-utils': '^1.0.0',
tapable: '^1.1.3',
'terser-webpack-plugin': '^1.4.3',
watchpack: '^1.6.1',
'webpack-sources': '^1.4.1'
}
engines = { node: '>=6.11.5' }
В процессе преобразования движок JavaScript пытается найти и вызвать три следующих метода объекта:
Вызывает obj[Symbol.toPrimitive](hint) – метод с символьным ключом Symbol.toPrimitive (системный символ), если такой метод существует, и передаёт ему хинт.
Иначе, если хинт равен "string"
пытается вызвать obj.toString(), а если его нет, то obj.valueOf(), если он существует.
В случае, если хинт равен "number" или "default"
пытается вызвать obj.valueOf(), а если его нет, то obj.toString(), если он существует.