function sortByLength(strs) {
// Bubble, in place
let sorted = false
let j = strs.length - 1
while (!sorted) {
sorted = true
for (let i = 0; i < j; i++) {
console.log(`${i} ${j}`)
if (strs[i].length > strs[i + 1].length) {
let temp = strs[i + 1]
strs[i + 1] = strs[i]
strs[i] = temp
sorted = false
}
console.log(strs)
}
j--
}
return strs
// Sort with callback, copy
// myStr = strs.slice()
// myStr.sort((a, b) => a.length < b.length ? -1 : 1)
// return myStr
}
/**
* Test Suite
*/
describe('sortByLength()', () => {
it('sorts the strings from shortest to longest', () => {
// arrange
const strs = ["abc", "", "aaa", "a", "zz"];
// act
const result = sortByLength(strs);
// log
console.log("result: ", result);
// assert
expect(result).toEqual(["", "a", "zz", "abc", "aaa"]);
});
});