FreeCodeCamp中国のコミュニティが質問とメモに答えます(パート4の文字列、配列操作)



Freecodecamp Chinese Community Answer Questions



FreeCodeCamp中国のコミュニティが質問とメモに答えます

1.文字列を切り捨てます(切り捨てられた文字列)

文字列を切り捨てます



(リッツを使用して反対側の出口を遮断します)

文字列の長さが指定されたパラメータnumより長い場合、余分な部分は...で表されます。



文字列の最後に挿入された3つのドットも、文字列の長さでカウントされることに注意してください。

ただし、指定されたパラメータnumが3以下の場合、追加された3つのドットは文字列の長さにカウントされません。

チャレンジを完了できない場合は、大きな「Read-Search-Ask」を開くことを忘れないでください。



/* Personal idea: For the given string, keep the first num bits, and the rest are replaced by... If num 3, the first num-3 bits are reserved, and the rest are replaced with ... If num >= str.length, return str itself */ function truncate(str, num) { var newString = '' //If num<=3, the first num bits are reserved, and the rest are replaced by... if(num <= 3) { newString = str.slice(0, num).concat('...') return newString } //If num >= str.length, return str itself if(num >= str.length) { newString = str return newString } //If num> 3, the first num-3 bits are reserved, and the rest are replaced by... else if(num > 3) { newString = str.slice(0, num - 3).concat('...') return newString } } truncate('A-tisket a-tasket A green and yellow basket', 50)

次に、チャンキーモンキー(分割配列)

バナナを食べて、配列を分割する猿

(サルはバナナを食べますが、食べるためにいくつかのセクションに分かれます)

指定された配列サイズサイズに従って、配列arrをいくつかの配列ブロックに分割します。

例:chunk([1,2,3,4]、2)= [[1,2]、[3,4]]

チャンク([1,2,3,4,5]、2)= [[1,2]、[3,4]、[5]]

チャレンジを完了できない場合は、大きな「Read-Search-Ask」を開くことを忘れないでください。

キーポイント:Array.slice()およびArray.push()

/* Personal idea: divide the array into sub-arrays according to the given size, and finally return the result as a new array */ function chunk(arr, size) { // Please write your code here var newArray = [] //var newArrayLength = Math.floor(arr.length / size) + arr.length% size //Calculate the length of the new array //return newArrayLength for(var i=0 i return newArray } chunk(['a', 'b', 'c', 'd'], 3) //[['a', 'b', 'c'], ['d']] chunk(['a', 'b', 'c', 'd'], 2) //[['a', 'b'], ['c', 'd']]

3、スラッシャーフリック(切り捨てられた配列)

配列を切り捨てる

n個の要素を切り捨てた後、配列の残りの要素を返します。切り捨てはインデックス0から始まります。

チャレンジを完了できない場合は、大きな「Read-Search-Ask」を開くことを忘れないでください。

これがあなたに役立ついくつかのリソースです:
Array.slice()
Array.splice()

キーポイント:splice()メソッド
splice()メソッドは、配列にアイテムを追加/配列からアイテムを削除してから、削除されたアイテムを返します。
このメソッドは元の配列を変更します。
ここに写真の説明を書いてください
splice()メソッドは、インデックスから始まる0個以上の要素を削除し、それらの削除された要素をパラメーターリストで宣言された1つ以上の値に置き換えます。

要素がarrayObjectから削除された場合、返される配列には削除された要素が含まれます。

1.削除-要素、2つのパラメーター、最初のパラメーター(最初のアイテムを削除する位置)、2番目のパラメーター(削除するアイテムの数)を削除するために使用されます。

2.挿入-配列の指定された位置に任意の項目を挿入します。 3つのパラメーター、最初のパラメーター(挿入位置)、2番目のパラメーター(0)、3番目のパラメーター(挿入項目)。

3.置換-配列の指定された位置に任意の要素を挿入し、同時に任意の数の項目、3つのパラメーターを削除します。最初のパラメーター(開始位置)、2番目のパラメーター(削除されたアイテムの数)、および3番目のパラメーター(任意の数のアイテムを挿入)。

//Return the remaining elements after an array is truncated by n elements. Truncation starts at index 0. function slasher(arr, howMany) { // Please write your code here var newArray = [] if(howMany > arr.length) { //If the given length is greater than the length of the array, return an empty array newArray = [] return newArray } newArray = arr.slice(howMany) return newArray } slasher([1, 2, 3], 2)

4.ミューテーション(indexOf()メソッド)

文字列を比較する

(ヒキガエルはチームメイトと対戦相手を食べることができます)

配列の最初の文字列要素に2番目の文字列要素のすべての文字が含まれている場合、関数はtrueを返します。

たとえば、['hello', 'Hello'] trueを返す必要がありますtrue、大文字と小文字を区別しないため、2番目の文字列のすべての文字が最初の文字列で見つかります。

['hello', 'hey']返される必要がありますfalse文字列のため'hello'文字「y」が含まれていません。

['Alien', 'line']戻る必要がありますtrue、行のすべての文字が「エイリアン」にあるためです。

チャレンジを完了できない場合は、大きな「Read-Search-Ask」を開くことを忘れないでください。

キーポイント:string.indexOf()メソッド

indexOf()メソッドは、文字列内で最初に出現する指定された文字列値を返します。

一致する文字列が見つからない場合は、-1が返されます。

注:indexOf()メソッドでは大文字と小文字が区別されます。
ここに写真の説明を書いてください
string.lastIndexOf()メソッド

lastIndexOf()メソッドは、指定された文字列値の最後の出現を返し、文字列内の指定された位置から逆方向に検索します。

//If the first string element of the array contains all the characters of the second string element, the function returns true. function mutation(arr) { var newArr1 = arr[0].toLowerCase()//Convert to lower case var newArr2= arr[1].toLowerCase() //Determine whether all elements in the second string can be found in the first string for(var i=0 i if(newArr1.indexOf(newArr2[i]) == -1) { return false } } return true } mutation(['hello', 'hey']) //false mutation(['Mary', 'Aarmy']) //true

5、偽の用心棒(フィルター()メソッド)

配列のfalse値をフィルター処理する

(真と偽の美孫悟空)

配列内のすべてのfalse値を削除します。

JavaScriptでは、偽の値はfalse, null, 0, '', undefined, and NaN.

チャレンジを完了できない場合は、大きな「Read-Search-Ask」を開くことを忘れないでください。

これがあなたに役立ついくつかのリソースです:

ブールオブジェクト
Array.filter()

Filter()メソッド:
filter()メソッドは、提供された関数によって実装されたテストのすべての要素を含む新しい配列を作成します。
filter()は、配列内の要素ごとに指定された関数(コールバック)を1回実行し、新しい配列を作成します。配列要素は、すべてのコールバック関数が実行されたときのtrueの戻り値です。元の配列の要素。配列内の空でない要素に対してのみ、指定された関数を実行します。割り当てられていない、または削除された要素は無視されます。同時に、新しく作成された配列にはこれらの要素は含まれません。

コールバック関数には、現在の要素、現在の要素のインデックス、現在の配列オブジェクトの3つのパラメーターを指定できます。

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'] const result = words.filter(word => word.length > 6) console.log(result) //['exuberant', 'destruction', 'present']

ここに写真の説明を書いてください
ここに写真の説明を書いてください

//Filter array false values. In JavaScript, false values ​​are false, null, 0, '', undefined and NaN. function bouncer(arr) { // Please write your code here return arr.filter(Boolean) } bouncer([7, 'ate', '', false, 9])

シックス、シークアンドデストロイ(引数、フィルター())

アレイを破棄する

ジンクスのすり鉢!

駆逐艦機能を実装します。最初のパラメーターは破棄される配列であり、残りのパラメーターは破棄される値です。

チャレンジを完了できない場合は、大きな「Read-Search-Ask」を開くことを忘れないでください。

これがあなたに役立ついくつかのリソースです:

Arguments object Array.filter() //Delete the specified value in the array, and then return a new array function destroyer(arr) { // Please write your code here //Arguments object check the number of parameters var numberOfArguments = arguments.length //return numbebrOfArguments //3 //Move the content after the first parameter into a new array var newArray1 = [] for(var i=1 i<arguments.length i++) { newArray1.push(arguments[i]) } //return newArray1 //[2, 3] //Filter out the elements in the new array newArray1 in the first array and return a new array var newArray2 = [] newArray2 = arr.filter(function(arr) { return newArray1.indexOf(arr) <0 }) return newArray2 } destroyer([1, 2, 3, 1, 2, 3], 2, 3) //[1, 1]

7.どこに属しますか(配列を並べ替え、要素を挿入してインデックス値を返します)

配列を並べ替えて、要素のインデックスを見つけます

ここはどこ?

最初に配列を並べ替えてから、配列内の指定された値の位置を見つけ、最後にその位置に対応するインデックスを返します。

例:where([1,2,3,4], 1.5)戻る必要があります1。 1.5が配列[1,2,3,4]に挿入されて[1,1.5,2,3,4]になるため、対応する1.5のインデックス値は1になります。

同様に、where([20,3,5], 19)戻る必要があります2。配列は最初に[3,5,20]としてソートされるため、19は配列[3,5,20]に挿入され、次に[3,5,19,20]になり、対応するインデックス値19は次のようになります。 2.2。

チャレンジを完了できない場合は、大きな「Read-Search-Ask」を開くことを忘れないでください。

// Sort the array first, then find the position of the specified value in the array, and finally return the index corresponding to the position. function where(arr, num) { //Array sort and return a new array var newArray = [] newArray = arr.sort(function(a, b) { return a - b }) //return newArray [2, 5, 6, 12] //Insert num and return the correct index if(num > newArray[newArray.length - 1]) { return newArray.length } for(var i=0 iif(newArray[i] >= num) { return i } } } where([2, 12, 6, 5], 8) //3

8.シーザー暗号

シーザーコード

(神を神に戻させ、カエサルをカエサルに戻させなさい)

世界中で人気のあるシーザーパスワードCaesar cipher、別名シフトパスワードを紹介しましょう。

パスワードのシフトとは、パスワードの文字が指定された番号に従ってシフトされることを意味します。

一般的なケースはROT13パスワードで、文字が13桁シフトされます。 「A」↔「N」、「B」↔「O」などから。

暗号化された文字列を入力し、復号化された文字列を出力するROT13関数を記述します。

すべての文字は大文字です。アルファベット以外の文字(スペース、句読点など)は変換しないでください。これらの特殊文字に遭遇した場合は、スキップしてください。

チャレンジを完了できないときは、大きな動きを開くことを忘れないでください'Read-Search-Ask'

これがあなたに役立ついくつかのリソースです:

String.charCodeAt()

charCodeAt()メソッドは、0〜65535の整数を返します。これは、指定されたインデックスのUTF-16コードユニットを表します。
ここに写真の説明を書いてください
ここに写真の説明を書いてください
ここに写真の説明を書いてください

ここに写真の説明を書いてください
String.fromCharCode()
static String.fromCharCode()このメソッドは、指定されたUnicode値のシーケンスを使用して作成された文字列を返します
ここに写真の説明を書いてください
ここに写真の説明を書いてください

//String.charCodeAt() returns the ASCII code value corresponding to the character at the specified index //String.fromCharCode(num1, num2, ..., numn) returns the string corresponding to the given ASCII code //Write a ROT13 function to realize input of encrypted string and output of decrypted string. function rot13(str) { // LBH QVQ VG! // Please write your code here //arr1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] //arr2 = ['N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'] var arr = str.split('') //eturn arr // ['S','E','R','R','','P','B','Q','R','','P','N','Z','C'] for(var i=0 i var num1= arr[i].charCodeAt(0) //The CII code value of the input encrypted character if(num1>=65 && num1<=90) { //Determine whether it is a character if(num1>=65 && num1<=77) { arr[i] = String.fromCharCode(num1+13) }else if(num1>=78&& num1<=90) { arr[i] = String.fromCharCode(num1-13) } }else { //If it is not a string, it will not change arr[i] = arr[i] } } str = arr.join('') return str } rot13('SERR PBQR PNZC') // You can modify this line to test your code