2.9 KiB
2.9 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d7b87367417b2b2512b42 | const で宣言された配列をミューテートする | 1 | 301206 | mutate-an-array-declared-with-const |
--description--
const
に慣れていない方は、こちらのチャレンジをご覧ください。
const
宣言は、現在の JavaScript では多くの用法があります。
デフォルトですべての変数を const
を使用して割り当てることを好む開発者もいますが、値の再割り当てを必要としないことがわかっている場合に限られます。 そうした開発者は、変数を再割り当てする場合にのみ let
を使用しています。
しかし、const
を使用して変数に割り当てたオブジェクト (列や関数を含む) であってもミュータブル (変更可能) であることを理解しておくことが重要です。 const
宣言を使用しても、変数識別子の再割り当てを防げるだけです。
const s = [5, 6, 7];
s = [1, 2, 3];
s[2] = 45;
console.log(s);
s = [1, 2, 3]
はエラーになります。 console.log
には値 [5, 6, 45]
が表示されます。
ご覧のように、オブジェクト [5, 6, 7]
それ自体をミューテートさせることができ、その場合も変数 s
は変更された配列 [5, 6, 45]
を指し示します。 あらゆる配列と同様に、s
内の配列要素はミュータブルですが、const
を使用したため、代入演算子を使用して異なる配列を指し示すように変数識別子 s
を使用することはできません。
--instructions--
配列が const s = [5, 7, 2]
として宣言されています。 さまざまな要素割り当てを使用して、配列を [2, 5, 7]
に変更してください。
--hints--
const
キーワードを置き換えないでください。
(getUserInput) => assert(getUserInput('index').match(/const/g));
s
は (const
を使用して宣言した) 定数変数である必要があります。
(getUserInput) => assert(getUserInput('index').match(/const\s+s/g));
元の配列宣言を変更しないでください。
(getUserInput) =>
assert(
getUserInput('index').match(
/const\s+s\s*=\s*\[\s*5\s*,\s*7\s*,\s*2\s*\]\s*;?/g
)
);
s
が [2, 5, 7]
と等しくなるようにする必要があります。
assert.deepEqual(s, [2, 5, 7]);
--seed--
--seed-contents--
const s = [5, 7, 2];
function editInPlace() {
// Only change code below this line
// Using s = [2, 5, 7] would be invalid
// Only change code above this line
}
editInPlace();
--solutions--
const s = [5, 7, 2];
function editInPlace() {
s[0] = 2;
s[1] = 5;
s[2] = 7;
}
editInPlace();