Files
2022-04-02 17:46:30 +09:00

3.2 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d78b2367417b2b2512b10 Splice() によるアイテムの削除 1 301166 remove-items-using-splice

--description--

shift()pop() を使用して、配列の先頭と末尾から要素を削除する方法を学びました。しかし中間のどこかから要素を取り除きたい場合はどうすればよいでしょうか? あるいは、一度に複数の要素を取り除きたい場合はどうすればよいでしょうか? そこで登場するのが splice() です。 splice() を使用すると、配列の任意の場所から連続した任意の数の要素を削除することができます。

splice() は最大で 3 つのパラメーターを受け取ることができますが、ここでは最初の 2 つだけに注目しましょう。 splice() の最初の 2 つのパラメーターは、splice() が呼び出されている配列内の要素のインデックス (または位置) を表す整数です。 すでに説明したように、配列はインデックスがゼロから始まるため、配列の最初の要素を指定する場合は 0 を使用します。 splice() の最初のパラメーターは、要素の削除を開始する配列上のインデックスを表します。 一方、2 番目のパラメータは、削除する要素の数を示します。 例:

let array = ['today', 'was', 'not', 'so', 'great'];

array.splice(2, 2);

ここでは、3 番目の要素 (インデックスが 2) から始まる 2 つの要素を削除しています。 array の値は ['today', 'was', 'great'] になります。

splice() は、呼び出されている配列を変更するだけでなく、削除された要素の値を含む新しい配列も返します。

let array = ['I', 'am', 'feeling', 'really', 'happy'];

let newArray = array.splice(3, 2);

newArray の値は ['really', 'happy'] になります。

--instructions--

配列 arr が初期化されています。 splice() を使用して arr から要素を削除し、値の合計が 10 となる要素のみを含むようにしてください。

--hints--

const arr = [2, 4, 5, 1, 7, 5, 2, 1]; の元の順序を変更しないでください。

assert(
  __helpers.removeWhiteSpace(code).match(/constarr=\[2,4,5,1,7,5,2,1\];?/)
);

arr には合計が 10 となる要素のみを含める必要があります。

assert.strictEqual(
  arr.reduce((a, b) => a + b),
  10
);

コードでは、arr に対して splice() メソッドを使用する必要があります。

assert(__helpers.removeWhiteSpace(code).match(/arr\.splice\(/));

splice は arr から要素を削除するのみで、arr にどんな新しい要素も追加しないものとします。

assert(
  !__helpers.removeWhiteSpace(code).match(/arr\.splice\(\d+,\d+,\d+.*\)/g)
);

--seed--

--seed-contents--

const arr = [2, 4, 5, 1, 7, 5, 2, 1];
// Only change code below this line

// Only change code above this line
console.log(arr);

--solutions--

const arr = [2, 4, 5, 1, 7, 5, 2, 1];
arr.splice(1, 4);