The challenge to solve was to write a function that takes two strings as inputs and if the first string can be re-arranged to create the second string, return the string "true". If not, return "false". I was able to solve it, but my solution is beefy and not exactly eloquent. I would like tips/tricks for condensing the code that I wrote.
//to solve, create (2) objects with the values as the # of appearances of chars
// in the (2) strings
const countStr1 = {};
const countStr2 = {};
for(let chr of str1) {
if (countStr1[chr]) {
countStr1[chr]++;
} else{
countStr1[chr] = 1;
}
}
for(let chr2 of str2){
if(countStr2[chr2]){
countStr2[chr2]++;
} else{
countStr2[chr2] = 1;
}
}
// console.log(countStr1);
// console.log(countStr2);
// create (2) arrays of keys:
const keys1 = Object.keys(countStr1);
const keys2 = Object.keys(countStr2);
//console.log(keys1.length);
//console.log(keys2.length);
if (keys2.length > keys1.length){
return "false";
}
for (let key of keys2) {
// console.log(countStr1[key]);
if (countStr1[key] < countStr2[key]){
return "false";
}
return "true";
}
}
// keep this function call here
console.log(StringScramble("cdoer","coder"));```