JSFiddle - React, Tailwind, and code Playground

by Fareez Ahmed

JavaScript

var commonCharacters = function (string1, string2) {
  //need it?
  var otherStrings = Array.prototype.slice.call(arguments, 1);

  var common = otherStrings.reduce(function (obj, string) {
    obj = intersection(obj, makeObject(string));
    return obj;
  }, makeObject(string1));

  return string1.split('').reduce(function (result, char) {
    if (common[char]) {
      result += char;
      common[char] = false;
    }
    return result;
  }, '');
};
var makeObject = function (string) {
  return string.split('').reduce(function (obj, character) {
    obj[character] = true;
    return obj;
  }, {});
};

var intersection = function (set1, set2) {
  return Object.keys(set1).reduce(function (out, val) {
    if (val in set2) {
      out[val] = true;

    }
    return out;
  }, {});
};

console.log(commonCharacters('acexivou', 'aegihobu'));
// Returns: 'aeiou'