From d039251a93ed146347dd0610e4d6c607bd24f23c Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Thu, 11 Jan 2018 20:17:25 +0200 Subject: [PATCH] Made select variadic --- snippets/select.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/snippets/select.md b/snippets/select.md index e000a3cec..07c95cb0f 100644 --- a/snippets/select.md +++ b/snippets/select.md @@ -1,15 +1,16 @@ ### select -Retrieve a property indicated by the selector from an object. +Retrieve a set of properties indicated by the given selectors from an object. -If the property does not exists returns `undefined`. +Use `Array.map()` for each selector, `String.split('.')` to split each selector and `Array.reduce()` to get the value indicated by it. ```js -const select = (from, selector) => - selector.split('.').reduce((prev, cur) => prev && prev[cur], from); +const select = (from, ...selectors) => + [...selectors].map(s => s.split('.').reduce((prev, cur) => prev && prev[cur], from)); ``` ```js const obj = { selector: { to: { val: 'val to select' } } }; -select(obj, 'selector.to.val'); // 'val to select' +select(obj, 'selector.to.val'); // ['val to select'] +select(obj, 'selector.to.val', 'selector.to'); // ['val to select', { val: 'val to select' }] ```