/**
 * 
 * Ashish Patel
 * e: ashishsushilPatel@gmail.com
 * w: https://ashish.me
 *
 */
/* 
Given an array of strings, group anagrams together.
Example:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]
Note:
All inputs will be in lowercase.
The order of your output does not matter.
*/
function groupAnagrams(value) {
  let grouped = {}
  for (let index = 0; index < value.length; index++) {
    let word = value[index]
    let key = word.split('').sort().join('');
    if(!grouped[key]) {
      grouped[key] = [word]
    } else {
      grouped[key].push(word)
    }
  }
  return Object.values(grouped)
}
test('group Anagrams', () => {
  expect(groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"])).toEqual([
    ["ate","eat","tea"],
    ["nat","tan"],
    ["bat"]
  ])
});Created 2020-02-23T17:46:04+00:00 · Edit