# Javascript Basics のまとめ - Javascript Fundamentals - JSchallenger

スポンサーリンク

## はじめに

JSchallenger の Javascript Fundamentals – Javascript Basics のまとめです。
まとめページのトップは、JSchallenger まとめ です。

## 問題一覧と回答

#### Sum two numbers

// Write a function that takes two numbers (a and b) as argument
// Sum a and b
// Return the result

``````function myFunction(a, b) {
return a + b;
}``````

#### Comparison operators, strict equality

// Write a function that takes two values, say a and b, as arguments
// Return true if the two values are equal and of the same type

``````function myFunction(a, b) {
return a === b;
}``````

#### Get type of value

// Write a function that takes a value as argument
// Return the type of the value

``````function myFunction(a) {
return typeof a;
}``````

#### Get nth character of string

// Write a function that takes a string (a) and a number (n) as argument
// Return the nth character of ‘a’

``````function myFunction(a, n) {
return a[n - 1];
}``````

#### Remove first n characters of string

// Write a function that takes a string (a) as argument
// Remove the first 3 characters of a
// Return the result

substring を使ってしまったが、slice を使うようにした方が応用が利いてよさそう

``````function myFunction(a) {
return a.substring(3);
}``````
``````function myFunction(a) {
return a.slice(3);
}``````

#### Get last n characters of string

// Write a function that takes a string as argument
// Extract the last 3 characters from the string
// Return the result

``````function myFunction(str) {
return str.slice(-3);
}``````

#### Get first n characters of string

// Write a function that takes a string (a) as argument
// Get the first 3 characters of a
// Return the result

``````function myFunction(a) {
return a.slice(0, 3);
}``````

#### Extract first half of string

// Write a function that takes a string (a) as argument
// Extract the first half a
// Return the result

``````function myFunction(a) {
return a.slice(0, a.length / 2);
}``````

#### Remove last n characters of string

// Write a function that takes a string (a) as argument
// Remove the last 3 characters of a
// Return the result

``````function myFunction(a) {
return a.slice(0, -3);
}``````

#### Return the percentage of a number

// Write a function that takes two numbers (a and b) as argument
// Return b percent of a

a の b% は？という問題なので、a に b をかけるというのが普通の考え方だと思うのだが、これって日本的な考え方なのか？
まあ、細かい話だが。

``````function myFunction(a, b) {
return a * b / 100;
}``````
``````function myFunction(a, b) {
return b / 100 * a
}``````

#### Basic JavaScript math operators

// Write a function that takes 6 values (a,b,c,d,e,f) as arguments
// Sum a and b
// Then substract by c
// Then multiply by d and divide by e
// Finally raise to the power of f and return the result
// Tipp: mind the order

``````function myFunction(a, b, c, d, e, f) {
return ((a + b - c) * d / e) ** f;
}``````
``````function myFunction(a, b, c, d, e, f) {
return (((a + b - c) * d) / e) ** f;
}``````

#### Check whether a string contains another string and concatenate

// Write a function that takes two strings (a and b) as arguments
// If a contains b, append b to the beginning of a
// If not, append it to the end
// Return the concatenation

``````function myFunction(a, b) {
return a.indexOf(b) === -1 ? a + b : b + a
}``````

#### Check if a number is even

// Write a function that takes a number as argument
// If the number is even, return true
// Otherwise, return false

``````function myFunction(a) {
return a % 2 === 0
}``````

#### How many times does a character occur?

// Write a function that takes two strings (a and b) as arguments
// Return the number of times a occurs in b

これは圧倒的に author’s solution の方がきれいな回答だった(/_＼*)

``````function myFunction(a, b) {
return (b.match(newRegExp(a.replace('?', '\\?'), 'g')) || [] ).length;
}``````
``````function myFunction(a, b) {
return b.split(a).length - 1
}``````

#### Check if a number is a whole number

// Write a function that takes a number (a) as argument
// If a is a whole number (has no decimal place), return true
// Otherwise, return false

``````function myFunction(a) {
returnNumber.isInteger(a);
}``````
``````function myFunction(a) {
return a - Math.floor(a) === 0
}``````

#### Multiplication, division, and comparison operators

// Write a function that takes two numbers (a and b) as arguments
// If a is smaller than b, divide a by b
// Otherwise, multiply both numbers
// Return the resulting value

``````function myFunction(a, b) {
return a < b ? a / b : a * b
}``````

#### Round a number to 2 decimal places

// Write a function that takes a number (a) as argument
// Round a to the 2nd digit after the comma
// Return the rounded number

toFixed 知らんかった。

``````function myFunction(a) {
returnMath.round(a * 100) / 100;
}``````
``````function myFunction(a) {
returnNumber(a.toFixed(2));
}``````

#### Split a number into its digits

// Write a function that takes a number (a) as argument
// Split a into its individual digits and return them in an array
// Tipp: you might want to change the type of the number for the splitting

このケースは連結して書いた方が分かりやすい気がする。

``````function myFunction(a) {
returnString(a).split('').map(s => Number(s));
}``````
``````function myFunction( a ) {
const string = a + '';
const strings = string.split('');
return strings.map(digit => Number(digit))
}``````

#### Clear up the chaos behind these strings

// It seems like something happened to these strings
// Can you figure out how to clear up the chaos?
// Write a function that joins these strings together such that they form the following words: // ‘Javascript’, ‘Countryside’, and ‘Downtown’
// You might want to apply basic JS string methods such as replace(), split(), slice() etc

``````function myFunction(a, b) {
return a[0].toUpperCase() +
a.slice(1).replace('%', '') +
b.replace('%', '').split('').reverse().join('');
}``````
``````function myFunction(a, b) {
constfunc = x => x.replace('%','');
const first = func(a);
const second = func(b).split('').reverse().join('');
return first.charAt(0).toUpperCase() + first.slice(1) + second;
}``````

#### Return the next higher prime number

// This challenge is a little bit more complex
// Write a function that takes a number (a) as argument
// If a is prime, return a
// If not, return the next higher prime number

function の中に function を作る発想はなかった。

``````function myFunction(a) {
while (1) {
flag = true;
for (i = 2; i <= Math.sqrt(a); i ++) {
if (a % i === 0) {
flag = false;
break;
}
}
if (flag) return a;
a ++;
}
}``````
``````function myFunction( a ) {
function isPrime(num) {
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) returnfalse;
}
return num > 1;
}
let n = a;
while (!isPrime(n)) n++;
return n
}``````

#### Find next higher natural number that is divisble by y

// Write a function that takes two numbers, say x and y, as arguments
// Check if x is divisible by y
// If yes, return x
// If not, return the next higher natural number that is divisible by y

``````function myFunction(x, y) {
return x % y === 0 ? x : (Math.floor(x / y) + 1) * y;
}``````
``````function myFunction(x, y) {
while (x % y !== 0) x++;
return x;
}``````

#### Insert character after every n characters (backwards)

// Write a function that takes two strings (a and b) as arguments
// Beginning at the end of ‘a’, insert ‘b’ after every 3rd character of ‘a’
// Return the resulting string

``````function myFunction(a, b) {
return a.replace( /(?=(...)+(?!.))/g, b);
}``````
``````function myFunction(a, b) {
let result = [];
let rest = a;
while (rest.length) {
result.push(rest.slice(-3));
rest = rest.slice(0, -3);
}
return result.reverse().join(b);
}``````

#### Find the correct word by incrementing letters in alphabet

// Write a function that takes a string as argument
// As it is, the string has no meaning
// Increment each letter to the next letter in the alphabet
// Return the correct word

これも連結して書いた方が分かりやすい気がする。

``````function myFunction(str) {
return str.split('').map(s => String.fromCharCode(s.charCodeAt() + 1)).join('');
}
``````
``````function myFunction(str) {
const arr = [...str];
const correctedArray = arr.map(e => String.fromCharCode(e.charCodeAt()+1));
return correctedArray.join('');
}``````
スポンサーリンク
ぷちめも

タイトルとURLをコピーしました