From 1bef45a0244ecceeb89238c4bfe089f1cb1ab671 Mon Sep 17 00:00:00 2001 From: Chalarangelo Date: Fri, 18 Jun 2021 21:51:48 +0300 Subject: [PATCH] Add symbolizeKeys --- snippets/symbolizeKeys.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 snippets/symbolizeKeys.md diff --git a/snippets/symbolizeKeys.md b/snippets/symbolizeKeys.md new file mode 100644 index 000000000..b9f7502b5 --- /dev/null +++ b/snippets/symbolizeKeys.md @@ -0,0 +1,23 @@ +--- +title: symbolizeKeys +tags: object,advanced +firstSeen: 2021-08-01T05:00:00-04:00 +--- + +Creates a new object, converting each key to a `Symbol`. + +- Use `Object.keys()` to get the keys of `obj`. +- Use `Array.prototype.reduce()` and `Symbol()` to create a new object where each key is converted to a `Symbol`. + +```js +const symbolizeKeys = obj => + Object.keys(obj).reduce( + (acc, key) => ({ ...acc, [Symbol(key)]: obj[key] }), + {} + ); +``` + +```js +symbolizeKeys({ id: 10, name: 'apple' }); +// { [Symbol(id)]: 10, [Symbol(name)]: 'apple' } +```