shuffle λ νΌλ°μ€ μ€λͺ :
μλ shuffle λ νΌλ°μ€ μ½λμ λν΄μ μ΅λν μμΈν μ€λͺ ν΄μ£ΌμΈμ!
π reference code
_.shuffle = function (arr) {
let arrCloned = arr.slice();
for (let fromIdx = 0; fromIdx < arr.length; fromIdx++) {
const toIdx = Math.floor(Math.random() * arr.length);
let temp = arrCloned[fromIdx];
arrCloned[fromIdx] = arrCloned[toIdx];
arrCloned[toIdx] = temp;
}
return arrCloned;
};
shuffle λ©μλλ λ°°μ΄ μμμ μμκ° λλ€νκ² λ³κ²½λ μλ‘μ΄ λ°°μ΄μ 리ν΄νλ€.
λ€μν μν© (ex. λΉλμ€ λλ μμ μ¬μμ μμλ₯Ό μμ λ) μμ μ μ©νκ² μ°μΌ μ μλ€.
κ·Έλ¬λ©΄ 본격μ μΌλ‘ μ½λλ₯Ό μ€λͺ νκΈ°μν΄ ν μ€μ© νν€μ³λ³΄μ !
π code
let arrCloned = arr.slice();
arrCloned μ΄λΌλ λ³μμ μμ 볡μ¬λ₯Ό ν΅νμ¬ λ°°μ΄μ κ°μ Έμλ€. μ¬κΈ°μ μ€μν μ μ slice() λ μλ³Έμ λ체νμ§ μλ μ , μ¦ μλ³Έμ λ°λ‘ μλ€λ λ»μ΄λ€.
String λ° Number κ°μ²΄ κ° μλ κ²½μ° λ¬Έμμ΄κ³Ό μ«μλ μ λ°°μ΄μ 볡μ¬νλ€. μ΄ μ λ°°μ΄μμλ λ§μλλ‘ κ°μ λ°κΏλ μλ³Έμ μλ¬΄λ° μν₯μ μ£Όμ§ μλ λ€λ μ μ λͺ μ¬νμ.
for (let fromIdx = 0; fromIdx < arr.length; fromIdx++) {
μ£Όμ΄μ§ λ°°μ΄μ μμλ₯Ό νμΈνκΈ° μν΄ for loop λ₯Ό μ¬μ©νμλ€. μΌλ°μ μΈ λ°°μ΄ λ°λ³΅λ¬Έμ΄λ€.
const toIdx = Math.floor(Math.random() * arr.length);
μ΄λΆλΆμμ νΉν random() λ©μλκ° μμν΄μ λ§μ΄ μ°Ύμλ΄€λ κ² κ°λ€. λ¨Όμ ranmdom() λ©μλλ 0μ΄μ 1 λ―Έλ§μ λΆλμμ«μ μμ¬ λμλ₯Ό λ°ν κ°μΌλ‘ νλ€.
κ·Έλ κΈ°λλ¬Έμ μμ floor(λ°λ²λ¦Ό) λ©μλλ₯Ό μ¬μ©νμ¬ μ μμΈ λμλ₯Ό μμ±νλ€κ³ 보면 λ κ² κ°λ€. round(λ°μ¬λ¦Ό) λ©μλλ₯Ό μ¬μ©ν μ λ μμ§λ§, μ΄λ κ² νλ©΄ λμκ° κ³ λ₯΄κ² λΆν¬νμ§ μκ² λλ€.
random() λ©μλμ λ°°μ΄μ κΈΈμ΄(arr.length)λ₯Ό κ³±ν΄μ€ μ΄μ λ λ°°μ΄μ κΈΈμ΄μ κ°κΉμ΄ μμμ μ μλ₯Ό μμ±νκΈ° μν¨μΈ κ² κ°λ€.
let temp = arrCloned[fromIdx];
μμ볡μ¬λ₯Ό ν΅ν΄ κ°μ Έμ¨ λ°°μ΄μ μμλ₯Ό tempλΌλ λ³μμ ν λΉμ νλ€. ν λΉμ ν μ΄μ μ λν΄μλ λ°μμ μ€λͺ νλ€.
λ€μ μ½λλ₯Ό λμ΄κ°κΈ° μ μ λ°°μ΄ λΉκ΅¬μ‘°ν ν λΉ λ¬Έλ²μ μΆ©λΆν μ΄ν΄λ₯Ό νκ³ κ°μ. μ΄ν΄λ₯Ό λκΈ° μν΄ λ¨Όμ κ°λ¨ν μ½λλ₯Ό μμλ‘ λ λ€.
const array = [1, 2];
const [one, two] = array;
console.log(one); // 1
console.log(two); // 2
μ΄ λ¬Έλ²μ λ°°μ΄ μμ μλ μμλ₯Ό λ€λ₯Έ μ΄λ¦μΌλ‘ μλ‘ μ μΈν΄μ£Όκ³ μΆμ λ μ¬μ©νλ©΄ λ§€μ° μ μ©νλ€.
arrCloned[fromIdx] = arrCloned[toIdx];
arrCloned[toIdx] = temp;
μ΄ μ½λλ₯Ό μ€λͺ
νκΈ° μν΄ λ¨Όμ arrCloned = [1, βaβ, 2, βbβ] λΌλ λ°°μ΄μ΄λΌκ³ κ°μ νμ.
λ°λ³΅λ¬Έμ ν΅ν΄ 첫λ²μ§Έ i λ arrCloned[0] κ° λ κ²μ΄κ³ κ°μ 1 μ΄λ€. toIdxλ random() λ©μλλ₯Ό ν΅ν΄ μμλ‘ 3μ μ μκ° λμλ€κ³ κ°μ νμ.
μμ μ½λλ
arrCloned[0] = arrCloned[3];
arrCloned[3] = temp (arrCloned[fromIdx] λ³μλ₯Ό ν λΉν μ΄μ );
μ΄λ κ² λ°λ³΅λ¬Έμ ν λ² λκ³ λλ©΄ λ°°μ΄μ [βbβ, βaβ, 2, 1] μ΄λΌλ κ°μΌλ‘ μμλ‘ λ³νκ² λλ€. μ΄λ° μμΌλ‘ λ°λ³΅λ¬Έμ λ€ λκ³ λλ©΄ λλ€νκ² λ³κ²½λ μλ‘μ΄ λ°°μ΄ κ°μ΄ λμ¬ κ² μ΄λ€.
μ΄ λΆλΆμ΄ shuffle λ©μλμ ν΅μ¬μΈ κ² κ°λ€.
return arrCloned;
κ·Έλ¦¬κ³ λ°λ³΅λ¬Έμ λ€λκ³ μλ‘ λ°°μ΄λ λ°°μ΄ κ°μ 리ν΄(λ°ν) ν΄μ€λ€.
μ΄ κ³΅λΆλ₯Ό ν΅ν΄ shuffle λ©μλλ₯Ό μλ²½ν μ§κ³ λμ΄κ° μ μκ² λμλ€. μμ 볡μ¬λ₯Ό ν΅ν΄ λλ€νκ² λ°°μ΄μ μμ λ μ¬μ©νλ©΄ μ μ©ν λ©μλλΌκ³ μκ°νλ€. μμ μ€λͺ νλ―μ΄ μμ μ¬μμ λλ€μΌλ‘ λ릴 λλ 무μμλ‘ μκ³ μΆμ λ μ¬μ©νλ©΄ μ μ©ν κ² κ°λ€.
κ°μ²΄ λ¬Έμ :
λ¬Έμμ΄μ μ λ ₯λ°μ κ°μ₯ λ§μ΄ λ°λ³΅λλ λ¬Έμλ₯Ό 리ν΄ν΄μΌ ν©λλ€.
let output = mostFrequentCharacter("apples not oranges");
console.log(output); // --> 'p'
output = mostFrequentCharacter("hello world");
console.log(output); // --> 'l'
let obj = {max: 0, countStr: ""};
for (let i = 0; i < str.length; i++) {
if (str[i] === " ") {
continue;
}
if (obj[str[i]] === undefined) {
obj[str[i]] = 0;
}
obj[str[i]]++;
if (obj["max"] < obj[str[i]]) {
obj["max"] = obj[str[i]];
obj["countStr"] = str[i];
}
}
return obj["countStr"];
μ΄ λ¬Έμ μ ν΅μ¬μ λ¨Όμ μΉ΄μ΄νΈλ₯Ό ν κ°μ²΄λ₯Ό ν λΉνκ³ , μΉ΄μ΄νΈκ° λ κ°μ λΉκ΅¬μ‘°ν ν λΉμΌλ‘ κ°μ Έμ€λ κ²μ΄λ€.
λλ μ΄ λ¬Έμ λ₯Ό ν λ μ²μμλ max = str[0] λ‘ ν λΉνκ³ max κ°μ λ¬Έμλ₯Ό λ°ννλ €κ³ νλ€. μ€λ μ½μ§ λμ
let obj = {};
let max = str[0];
if (str === "") {
return "";
}
for (let i = 0; i < str.length; i++) {
if (str[i] === " ") {
continue;
} else if (obj[str[i]] === undefined) {
obj[str[i]] = 0;
}
obj[str[i]]++;
if (obj[max] < obj[str[i]]) {
obj[str[i]];
max = str[i];
}
}
if (Object.keys(obj).length === 0) {
return "";
}
return max;
μ΄ μ½λλ‘ λ¬Έμ λ₯Ό νμ΄λ³΄κΈ°λ νλ€. νμ§λ§ μ΄ μ½μ§μ΄ κ²°κ΅ HA μνμ ν° λμμ΄ λμλ€. HA μν 1λ² λ¬Έμ λ₯Ό κ°λ³κ² ν μ μμλ€.
κ³ μ°¨ν¨μ λ¬Έμ :
μλ 쑰건μ λ§κ² λ³νλ λ°°μ΄μ 리ν΄ν΄μΌ ν©λλ€.
let studentList = [
{
name: "Anna",
gender: "female",
grades: [4.5, 3.5, 4]
},
{
name: "Dennis",
gender: "male",
country: "Germany",
grades: [5, 1.5, 4]
},
{
name: "Martha",
gender: "female",
grades: [5, 4, 4, 3]
}
];
console.log(output); // -->
[
{name: "Anna", gender: "female", grades: 4},
{name: "Martha", gender: "female", grades: 4}
];
const filtering = students.filter(el => el.gender === "female");
return filtering.map(function (el) {
const average = el.grades.reduce(function (acc, cur) {
return acc + cur;
}, 0);
const grade = average / el.grades.length;
el.grades = grade;
return el;
});
κ° ν¨μμ λ»μ μ νν μ΄ν΄νλ©΄ μ½κ² ν μ μλ λ¬Έμ μλ€. ν¨μλ₯Ό νλμ© μ°¨κ·Ό μ°¨κ·Ό μ¨κ°λ©΄μ λ΄λ €κ°λ³΄λ λ΅μ μ°Ύμ μ μμλ€.
νμ§λ§ μ΄ λ¬Έμ λν μ½μ§μ μ ν건 μλλ€. 맀κ°λ³μ el κ°μ κ³μ κ°μ Έμ€λ©΄μ λ§μ§λ§μ νκ· κ°μ ν λΉνλ κ²μ΄ λ§νμλ€.
μ리λ₯Ό νλμ© μ§μ΄λ³΄λ©° νμ΄κ°λ€λ³΄λ ν΄κ²°ν μ μμλ€.
π λ΄μΌμ TIW(today I Will)
μ¬κ·ν¨μ, μκ³ λ¦¬μ¦