題目
Day 5: Template Literals
舉例輸入
10
14
舉例輸出
10
14
解析
其實這個還蠻驚人的
``<=這個東西用這麼久我還真的不知道它可以拆開來丟進方法
照原題目這樣丟,會將${}做完分割符,並拆成兩個陣列,調適方法如下
sides`The area is: ${s1 * s2}.\nThe perimeter is: ${2 * (s1 + s2)}.`;
function sides(literals, ...expressions) {
console.log(literals);
// ["The area is: ", ".\nThe perimeter is: ", "."]
console.log(expressions);
//[140, 48]
}
好了,既然這裏明白了
那麼接下來那個看起來很複雜的運算也沒甚麼了
只是個正負號變換而已
function sides(literals, ...expressions) {
const [a, p] = expressions;
return [
((p - Math.sqrt(Math.pow(p,2) - (16 * a))) / 4),
((p + Math.sqrt(Math.pow(p,2) - (16 * a))) / 4),
]
}
題目
Day 5: Arrow Functions
舉例輸入
5
1 2 3 4 5
舉例輸出
3 4 9 8 15
解析
傳入一個陣列,遍歷該元素
若基數:*3
若偶數:*2
並組合成一個新陣列
一想到要把一個陣列經過處理變成新陣列,直接map不解釋
function modifyArray(nums) {
return nums.map(num => num % 2 == 0 ? num * 2 : num * 3);
}
有沒有外星寫法?
有的,這應該只有本科系的人看得懂
function modifyArray(nums) {
return nums.map(num => (num & 1) ? num * 3 : num * 2);
}
二進位的&算法
加上javascript真值表
把0拿去判斷會回傳false而達成
簡單說一下
2=>0010
1=>0001
&就是上下相同輸出1,不同輸出0
上面這題出現為0 因此執行三元運算子後半部*2
3=>0011
1=>0001
&就是上下相同輸出1,不同輸出0
上面這題出現為1 因此執行三元運算子前半部*3
本日心得