Suzuki Blog Written by Yuki Suzuki

【JavaScript関数ドリル】初級編のtakeRight関数の実装のアウトプット

JavaScript

こちらは、JavaScript関数ドリルに取り組んだ際の、アウトプット記事です。

JavaScript関数ドリル

JavaScript初心者の方、関数の作成に苦手意識のある方は参考にして頂けたらと思います。

スポンサードサーチ

takeRight関数の課題内容

LodashのtakeRight関数を実装します。

詳しい「課題内容」「解説動画」「解答例」を確認したい場合は、以下リンク先のページを参照。

takeRight関数

takeRight関数に取り組む前の状態

実装アイデアが全く思い浮かばない状態。

スポンサードサーチ

takeRight関数に取り組んだ後の状態

実装できた。

splice関数の勉強になった。

splice関数①

splice関数②

takeRight関数の実装コード(答えを見る前)

function takeRight(array, n = 1) {
  let newArray = [];
  let index;

  // spliceの第1引数を決める
  if(array.length >= n) {
    // 要素数が取り除く数より多い場合
    index = array.length - n
  } else {
    // 要素数が取り除く数より少ない場合、先頭から取り除くため、0を設定
    index = 0;
  }

  newArray = array.splice(index, n);

  return newArray;
}

console.log(takeRight([1, 2, 3]));
// => [3]
console.log(takeRight([1, 2, 3], 2));
// => [2, 3]
console.log(takeRight([1, 2, 3], 5));
// => [1, 2, 3]
console.log(takeRight([1, 2, 3], 0));
// => []

スポンサードサーチ

takeRight関数の実装コード(答えを見た後)

解答例

function takeRight(array, n = 1) {
  if(n === 0) {
    return [];
  }
  if(n > array.length) {
    return [...array];
  }

  const takenArray = [];
  for(let i = 0; i < n; i++) {
    // array [1, 2, 3]
    // 1 + i => 1, 2, 3
    // array.length =>
    //   3 - (1 + 0) = 2,
    //   3 - (1 + 1) = 1
    //   3 - (1 + 2) = 0
    const indexFromRight = array.length - (1 + i)
    takenArray.unshift( array[indexFromRight] );
  }

  return takenArray;
}

console.log( takeRight([1, 2, 3]) );
// => [3]

console.log( takeRight([1, 2, 3], 2) );
// => [2, 3]

console.log( takeRight([1, 2, 3], 5) );
// => [1, 2, 3]

console.log( takeRight([1, 2, 3], 0) ) ;
// => []