js配列メンバーを上書きする方法copyWithin()fill()-Kaiqisan
12228 ワード
js配列メンバーを上書きする方法copyWithin()fill()
雅哈罗,Kaiqisan吧,是一个两个学生制作剧,今日は配列内容を一括置換する知識についてお話しします.どうしてこの2つの方法を一緒に置いたのですか.この2つの方法には共通点があるわけではない.それは、配列メンバーを一括上書きし、書き換えることができることだ.copyWithin(target, start, end)
:配列内のあるセグメントの情報を抽出し、別の場所にコピーする.3つのパラメータがあり、最初の数targetは、指定したターゲットインデックスの位置にコピーすることを意味し、コンテンツをコピーした後、ターゲットインデックスから貼り付けを開始し、貼り付けが完了するか、配列の下付きラベルの末尾に達するまで後ろに貼り付けます.第2に、第3のパラメータstart endは、レプリケーションが必要なメンバーの開始下付き文字と終了下付き文字であり、オプションであり、両方が選択されていない場合は、デフォルトのレプリケーション配列のすべてのメンバーであり、書かれたstartパラメータのみが、endパラメータが書かれていない場合は、start下付き文字から配列の末尾に値を割り当てます.このメソッドは値を返さず,元の配列に直接影響を及ぼす.
注意すべきは、endパラメータを書かないでstartパラメータを書かないでください.これにより、最初の配列メンバーからend下付きメンバーにコピーするという効果は得られず、かえってエラーが発生するので注意してください.
もう1つ注意しなければならないのは、ここでのendパラメータは、end下付きメンバーまでコピー操作を意味するのではなく、end下付きメンバーの前のメンバーまでです.例えば、私のパラメータは3番目のパラメータから8番目のパラメータまでコピーすると書かれていますが、実際に配列メンバーを3番目のメンバーから7番目まで取得します.let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.copyWithin(5, 2, 4)
console.log(arr); // ["a", "b", "c", "d", "e", "c", "d", "h"]
// 2,3 , 5 , f,g c,d, 。
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.copyWithin(4)
console.log(arr); // ["a", "b", "c", "d", "a", "b", "c", "d"]
// , 4 , , ,
PS:start endパラメータは負数をサポートし、逆数|n|の下付きを表し、最後のパラメータはarr.length-nに変換され、後のプロセスはすべて同じである.let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.copyWithin(1, -2) // ( ), 1
console.log(arr); // ["a", "g", "h", "d", "e", "f", "g", "h"]
PS:これは配列方法です.文字列の使用はサポートされていません.文字列をコピーしようとすると死んでしまいます.他の方法を試してみてください.fill(val, start, end)
:この方法の理解の難しさは上記の方法よりずっとよく理解されています.指定した値を下付きのマークに対応させ、元のメンバーの内容を上書きすることです.3つの値はすべてオプションで、1つ目の値valは置換したい要素で、2つ目の3つ目のstart endは開始と終了の下付き文字を置換したいと思っています.このendの意味は上記の方法copyWithin()の方法と同じで、endの下付き文字に置換するのではなく、endの下付き文字の前のメンバーに置換します.このメソッドは値を返さず,元の配列に直接影響を及ぼす.let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill('hello?', 3, 7) // 3 6 ‘hello?’
console.log(arr) // ["a", "b", "c", "hello?", "hello?", "hello?", "hello?", "h"]
2,3番目のパラメータに値が入力されていない場合は、デフォルトですべての内容を置換します.let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill('hello?')
console.log(arr)
// ["hello?", "hello?", "hello?", "hello?", "hello?", "hello?", "hello?", "hello?"]
2番目、3つのパラメータは入力負数をサポートし、最後から|n|番目のメンバーを表します.let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill('hello?', 3, -2) // 3 (arr.length - 2 - 1) ( )
console.log(arr)
// ["a", "b", "c", "hello?", "hello?", "hello?", "g", "h"]
内部の値が1つも伝わらない場合は、配列の内容のすべての内容を空にすると、undefinedに置き換えられます.let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill()
console.log(arr)
// [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
まとめ
この二つの方法、まぁ.最もよく身につけることができて、実践の中で少なく使うことができますが、つまり大量のデータ処理の上でも多く使うことができます.
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.copyWithin(5, 2, 4)
console.log(arr); // ["a", "b", "c", "d", "e", "c", "d", "h"]
// 2,3 , 5 , f,g c,d, 。
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.copyWithin(4)
console.log(arr); // ["a", "b", "c", "d", "a", "b", "c", "d"]
// , 4 , , ,
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.copyWithin(1, -2) // ( ), 1
console.log(arr); // ["a", "g", "h", "d", "e", "f", "g", "h"]
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill('hello?', 3, 7) // 3 6 ‘hello?’
console.log(arr) // ["a", "b", "c", "hello?", "hello?", "hello?", "hello?", "h"]
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill('hello?')
console.log(arr)
// ["hello?", "hello?", "hello?", "hello?", "hello?", "hello?", "hello?", "hello?"]
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill('hello?', 3, -2) // 3 (arr.length - 2 - 1) ( )
console.log(arr)
// ["a", "b", "c", "hello?", "hello?", "hello?", "g", "h"]
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
arr.fill()
console.log(arr)
// [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
この二つの方法、まぁ.最もよく身につけることができて、実践の中で少なく使うことができますが、つまり大量のデータ処理の上でも多く使うことができます.