From 95e56037028c8f90ad73659494cf0b1a7de0cd42 Mon Sep 17 00:00:00 2001 From: Bruce Feldman Date: Sun, 12 Aug 2018 20:56:24 -0400 Subject: [PATCH] Optimized longestItem --- snippets/longestItem.md | 4 ++-- test/longestItem/longestItem.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/snippets/longestItem.md b/snippets/longestItem.md index ca61d93f4..9e277e1d8 100644 --- a/snippets/longestItem.md +++ b/snippets/longestItem.md @@ -2,10 +2,10 @@ Takes any number of iterable objects or objects with a `length` property and returns the longest one. -Use `Array.sort()` to sort all arguments by `length`, return the first (longest) one. +Use `Array.reduce()` to collect the longest element. Returns [] for empty array. ```js -const longestItem = (...vals) => [...vals].sort((a, b) => b.length - a.length)[0]; +const longestItem = (...vals) => [...vals].reduce((a, x) => (a.length > x.length ? a : x), []); ``` ```js diff --git a/test/longestItem/longestItem.js b/test/longestItem/longestItem.js index d5f7c2528..4d63c3413 100644 --- a/test/longestItem/longestItem.js +++ b/test/longestItem/longestItem.js @@ -1,2 +1,2 @@ -const longestItem = (...vals) => [...vals].sort((a, b) => b.length - a.length)[0]; +const longestItem = (...vals) => [...vals].reduce((a, x) => (a.length > x.length ? a : x), []); module.exports = longestItem;