2017年4月16日日曜日

開発環境

コードの続きをES6(ES2015)っぽく(?)、配列の操作の部分を for loop の代わりに map method、reduce method を使って書いてみた。

コード(Emacs)

HTML5

<input id="nums0" type="text" value="9,1 2 1 2 1 2 1 2 1">
<br>
<button id="run0">run</button>
<button id="clear0">clear</button>
<pre id="output0"></pre>

<script src="sample.js"></script>

JavaScript

let input0 = document.querySelector('#nums0');
    btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    pre0 = document.querySelector('#output0'),
    p = (x) => pre0.textContent += x + '\n';

// ここから
let output = () => {
    let input = input0.value.split(','),
        ans = 0,
        up = false,
        down = false;
    
    input[1]
        .split(' ')
        .slice(0, parseInt(input[0], 10))
        .map((x) => parseInt(x, 10))
        .reduce((x, y) => {            
            up = x < y ? true : up;
            down = x > y ? true : down;
            if (up && down) {
                up = down = false;
                ans += 1;
            }
            return y;
        });
    p(ans + 1);
};
// ここまで

btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';

output();











						

0 コメント:

コメントを投稿