get words from str1 that not present in str2 and opposite /
by asdf
JavaScript
function getDiff (str1, str2) {
function removeSeparators (str) {
return str.replace(/[^\w\s]|_/g, " ").replace(/\s+/g, " ").replace(/^ +/gm, '').replace(/\s+$/, '').split(" ");
} // end of removeSeparators
function arrToObj (arr) {
var newObj = {};
for (var i = 0; i < arr.length; i++) {
newObj[arr[i]] += 1;
} // end of for i
return newObj;
} // end of arrToObj
function objToArr (obj) {
var newArr = [];
for (var p in obj) {
for (var y = 1; y<=obj[p]; y++){
newArr.push(p);
} //end of for y
} //end of for p
return newArr;
} // end of objToArr
function findUnique (arrDiff, arr, obj) {
for (var j = 0; j < arr.length; j++) {
if (!obj.hasOwnProperty(arr[j])) {
arrDiff.push(arr[j]);
}
} // end of for j
} // end of findUnique
var arr1 = removeSeparators(str1);
var arr2 = removeSeparators(str2);
if (arr1.join("") == "" && arr2.join("") == "") {
return "";
} else if (arr1.join("") == "") {
return arr2.join(", ");
} else if (arr2.join("") == "") {
return arr1.join(", ");
}
var uniqueArr = [];
var obj1 = arrToObj (arr1),
obj2 = arrToObj (arr2);
findUnique(uniqueArr, arr1, obj2);
findUnique(uniqueArr, arr2, obj1);
var uniqueStr = uniqueArr.join(", ");
return uniqueStr;
// myArray.concat(findUnique(arr1, obj2)); // if findUnique returns array use concat to merge arrays; concat() method is used to join two or more arrays: array1.concat(array2,array3,...,arrayX);
}; // end of getDiff
console.log(getDiff("a.b.c.d", "abcd"));
console.log(getDiff( "", "a b c d"));
console.log(getDiff( "", ", "));
console.log(getDiff( "e f g,a", ""));
console.log(
getDiff( " The red brown fox, jumped over the rolling log. ",
"The brown spotted fox leaped over...