JavaScript 関数問題 まとめ 11~20

JavaScriptの練習として個別にアップしている投稿をまとめました。
実際のコード、詳細等は投稿したページにリンクでつないでいます。
載せているコード以外のこたえが浮かんだ方はコメントいただけると嬉しいです。
このまとめが他の方の参考になれば幸いです。

[JavaScript 関数問題 まとめ 1~10](http://qiita.com/may88seiji/items/2f464529ef9709059990)
[JavaScript 関数問題 まとめ 21~30](http://qiita.com/may88seiji/items/b716cd6fad5edb79d749)

##11 文章のタイトルケース変換
文章をタイトルケース変換する。
*Title Case　頭文字だけが大文字の単語

```js
 function titleCase(str) {
//write your code.
}
titleCase("i'm a little tea pot");
```

出力結果　例 

```js
("sHoRt AnD sToUt") // "Short And Stout"
("I'm a little tea pot") // "I'm A Little Tea Pot"
("HERE IS MY HANDLE HERE IS MY SPOUT") // "Here Is My Handle Here Is My Spout"
```

[コード・詳細](http://qiita.com/may88seiji/items/e9952ceca8538db05646)

##12 偽とみなされる値を配列から取り除く 
偽とみなされる値（ 0, -0, null, false, NaN, undefined ,空文字列 ("") ）を配列から取り除く。

```js
 function bouncer(arr) {
//write your code.
}

bouncer([1, null, NaN, 2, undefined]);
```

出力結果　例 

```js
(["a", "b", "c"]) //["a", "b", "c"]
([1, null, NaN, 2, undefined]) // [1, 2]
([false, null, 0, NaN, undefined, ""]) // []
```

[コード・詳細](http://qiita.com/may88seiji/items/e89ecf9232dfbe79d84f)

##13 配列から目的の要素を取り除く 

```js
 function removeElementFromArray(arr) {
//write your code.
 }
removeElementFromArray([1, 2, 3, 1, 2, 3], 2, 3);
```

出力結果　例 

```js
([1, 2, 3, 1, 2, 3], 2, 3) //[1, 1]
([3, 5, 1, 2, 2], 2, 3, 5) //[1]
([2, 3, 2, 3], 2, 3) //[]
(["tree", "hamburger", 53,1,2], "tree", 53 ,2) //["hamburger", 1 ]
```

[コード・詳細](http://qiita.com/may88seiji/items/5bcbd0b7f7abcd93a6a5)

##14 配列を並べ替えて、目的の数字が入る場所を返す 
配列(第一引数)を小さい数字から並べ替えて、目的の数字(第二引数)が入る添字を返す。

```js
 function getIndexToIns(arr, num) {
//write your code.
}

getIndexToIns([5,1,2,3,4], 1.5);
```

出力結果　例 

```js
([40, 60], 50) // 1
([3, 10, 5], 3) // 0
([2, 5, 10], 15) // 3
([2, 20, 10], 19) // 2
([5, 3, 20, 3], 5) // 2
([10, 20, 30, 40, 50], 30) // 2
```

[コード・詳細](http://qiita.com/may88seiji/items/6041687b43381ddf18fe)

##15 シーザー暗号(ROT13) 
アルファベットに対してのシーザー暗号（ROT13）の関数をつくる

[*シーザー暗号](https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%B6%E3%83%BC%E6%9A%97%E5%8F%B7) Wikipedia
シーザー暗号は単一換字式暗号の一種で、平文の各文字を、辞書順に3文字分シフトして暗号文を作る暗号。現代でもシフト数を13にした方式としてROT13が使用されることがある。

```js
 function rot13(str) {
//write your code.
}
rot13("URYYB JBEYQ!");
```

出力結果　例 

```js
("SERR CVMMN!") // "FREE PIZZA!"
("SERR YBIR?") // "FREE LOVE?"
("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.") // "THE QUICK BROWN DOG JUMPED OVER THE LAZY FOX."
```

[コード・詳細](http://qiita.com/drafts/eae423c03e8cd2809661/edit)

##16 配列の範囲の中の数字を合計する 
与えられた配列の二つの数の範囲の数字を合計する。
二つの数は小さい順に並んでいるとは限らない。

```js
 function sumAll(arr) {
//write your code.
}
sumAll([4,1]);// 10
```

出力結果　例 

```js
sumAll([1, 4]) // 10
sumAll([4, 1]) // 10
sumAll([5, 10]) // 45
sumAll([10, 5]) // 45
```

[コード・詳細](http://qiita.com/may88seiji/items/42f6f6c5a08963703f50)

##17 二つの配列の差分を求める 


```js
 function diffArray(arr1, arr2) {
 //write your code.
}
diffArray(["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]);
```

出力結果　例 

```js
[1, 2, 3, 5], [1, 2, 3, 4, 5] // [4]
[1, "calf", 3, "piglet"], [1, "calf", 3, 4] // ["piglet", 4]
[], ["snuffleupagus", "cookie monster", "elmo"] // ["snuffleupagus", "cookie monster", "elmo"]
[1, "calf", 3, "piglet"], [7, "filly"] // [1, "calf", 3, "piglet", 7, "filly"]
```

[コード・詳細](http://qiita.com/may88seiji/items/b8fe10ebd33c0cdaf601)

##18 ローマ数字変換 
10進法をローマ数字へ変換する。



```js
 function convertToRoman(num) {
//write your code.
}
convertToRoman(649);//DCXLIX
```

出力結果　例 

```js
convertToRoman(68) // "LXVIII"
convertToRoman(891) // "DCCCXCI"
convertToRoman(3999) // "MMMCMXCIX"
```

[コード・詳細](http://qiita.com/may88seiji/items/cc783abdcbddc4e1da88)

##19 配列のオブジェクトから一致するペアを返す 
配列のオブジェクト（最初の引数）を調べ、一致するプロパティと値のペア（2番目の引数）を持つすべてのオブジェクトを持つ配列を返す関数を作る。

```js
 function findPair(collection, source) {
//write your code.
}

findPair([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
//[{ first: "Tybalt", last: "Capulet" }]
```

出力結果　例 

```js
findPair([{ "a": 1 }, { "a": 1 }, { "a": 1, "b": 2 }], { "a": 1 }) // [{ "a": 1 }, { "a": 1 }, { "a": 1, "b": 2 }]
findPair([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }) // [{ "a": 1, "b": 2 }, { "a": 1, "b": 2, "c": 2 }]
findPair([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "c": 2 }) // [{ "a": 1, "b": 2, "c": 2 }]
```

[コード・詳細](http://qiita.com/may88seiji/items/497555d098b630d01bcb)

##20 文章から目的の単語を探して置き換える
・文章から目的の単語を探して置き換える。
・目的の単語が大文字から始まる場合は置き換える単語も大文字にする。

```js
 function replace(str, before, after) {
//write your code.
}

replace("His name is Tom", "Tom", "john");//"His name is John"
```

出力結果　例 

```js
replace("He is Sleeping on the couch", "Sleeping", "sitting") // "He is Sitting on the couch"
replace("This has a spellngi error", "spellngi", "spelling") // "This has a spelling error"
replace("Let us get back to more Coding", "Coding", "algorithms") // "Let us get back to more Algorithms"
```

[コード・詳細](http://qiita.com/may88seiji/items/2f57efcb2e90ec51ebcf)