Javascript_30_17
15523 ワード
こんにちは!
デレクです😃
新年の最初の月曜日.みんなの新年の第1回のHELLAYが过ぎるのが良いことを知りたいです!
頭を触って頭を触って!
今日はDay 17の計画についてお話しします役に立つ気がするスタートパッ~
17. Sort without Articles
n/a.ターゲット
文字列を含む配列をalphabetical
順に並べ替えます.しかし、前冠刑事を除く.
冠詞とは、a
、an
、the
!これは簡単な問題で、その友达を除いて、お見合いに行きます.let bands = ['The Plot in You', 'The Devil Wears Prada',
'Pierce the Veil', 'Norma Jean', 'The Bled',
'Say Anything', 'The Midway State',
'We Came as Romans', 'Counterparts',
'Oh, Sleeper', 'A Skylit Drive',
'Anywhere But Here', 'An Old Dog'];
整理名band
の配列を上図のように示します.
Derek実装コード
const cutOffTitle = (bandName) => {
if(bandName.startsWith("A ")) {
return bandName.substring(2);
}
else if(bandName.startsWith("The ")) {
return bandName.substring(4);
}
else {
return bandName.substring(3);
}
}
const changeTitle = (band) =>
(band.startsWith("A ") || band.startsWith("The ") || band.startsWith("An ")) ?
cutOffTitle(band) : band;
const result = bands.sort( (a, b) =>
changeTitle(a) > changeTitle(b) ? 1 : -1 );
document.querySelector("#bands").innerHTML = result.map(el =>
`<li>${el}</li>`).join("");
一つ一つ整理しておきます
01.cutOffTitle関数とchangeTitle関数
文字列がcutOffTitle
、A
、The
およびAn
で始まる場合、この関数は切り取り関数です.
この関数は、changeTitle
関数の3つの演算子構文に含まれます.const changeTitle = (band) =>
(band.startsWith("A ") || band.startsWith("The ") || band.startsWith("An ")) ?
cutOffTitle(band) : band;
band
パラメータが3つの場合で始まる場合、cutOffTitle
関数を実行するか、関数を返すだけです.
整理すると、changeTitle
関数では、前にクラウンがあるかどうかを確認し、ある場合はcutOffTitle
関数を呼び出してクラウンを切り取ります.
このchangeTitle
関数はsort
に使用されます.
02.sort関数
sort
関数を実行する場合、callback
は必要に応じて調整できます.すなわち、changeTitle
関数を使用します. const result = bands.sort( (a, b) => changeTitle(a) > changeTitle(b) ? 1 : -1 );
パラメータa
とb
をchangeTitle
関数に直接入れて比較sorting
します.sort
いつ関数を見ても難しいです.以前の投稿を参考にアルファベット順でお見合いをしました.
03.画面出力機能
document.querySelector("#bands").innerHTML = result.map(el => `<li>${el}</li>`).join("");
とても簡単です.result
を使用してmap
要素を作成し、HTML
にグループ化し、join
に渡します.
Wes Bos実装コード
講義のWesBosの和弦が少し違うので知っておくともっと良くなるので整理しておきますfunction strip(bandName) {
return bandName.replace(/^(a |the |an )/i, '').trim();
}
const sortedBands = bands.sort((a, b) => strip(a) > strip(b) ? 1 : -1);
同様に、正規表現を使用して文字列innerHTML
関数を調整します.sort
正規表現を1つずつ表示する場合は、
let bands = ['The Plot in You', 'The Devil Wears Prada',
'Pierce the Veil', 'Norma Jean', 'The Bled',
'Say Anything', 'The Midway State',
'We Came as Romans', 'Counterparts',
'Oh, Sleeper', 'A Skylit Drive',
'Anywhere But Here', 'An Old Dog'];
const cutOffTitle = (bandName) => {
if(bandName.startsWith("A ")) {
return bandName.substring(2);
}
else if(bandName.startsWith("The ")) {
return bandName.substring(4);
}
else {
return bandName.substring(3);
}
}
const changeTitle = (band) =>
(band.startsWith("A ") || band.startsWith("The ") || band.startsWith("An ")) ?
cutOffTitle(band) : band;
const result = bands.sort( (a, b) =>
changeTitle(a) > changeTitle(b) ? 1 : -1 );
document.querySelector("#bands").innerHTML = result.map(el =>
`<li>${el}</li>`).join("");
const changeTitle = (band) =>
(band.startsWith("A ") || band.startsWith("The ") || band.startsWith("An ")) ?
cutOffTitle(band) : band;
const result = bands.sort( (a, b) => changeTitle(a) > changeTitle(b) ? 1 : -1 );
document.querySelector("#bands").innerHTML = result.map(el => `<li>${el}</li>`).join("");
function strip(bandName) {
return bandName.replace(/^(a |the |an )/i, '').trim();
}
const sortedBands = bands.sort((a, b) => strip(a) > strip(b) ? 1 : -1);
/^(a |the |an )/i
:次の友人が開始すると表示されます.^
:(a |the |an )
とスペース、a
とスペース、the
とスペースを組み合わせます.これらの友人から始まる正規表現を探します.an
:検索に敏感ではありません.つまり、私は大文字と小文字を気にしない.i
を使用してreplace
に置き換えます.つまり、空の文字列で置き換えます.言い換える消せ!また、
""
関数は関数であり、前後にスペース文字があれば消去できます.正規式は本当に難しいです理解できるけどうまく書けない感じ?英語のジョークのような存在.
***
***
***
今日は正規表現と'sort'関数に関する課題を整理した.どちらも自由自在にはできません
いつか私は達人になることを夢見ます...
エラーや修正が必要な場合は、いつでもフィードバックしてください.
ありがとう!🤗
Reference
この問題について(Javascript_30_17), 我々は、より多くの情報をここで見つけました https://velog.io/@ghdtjrrl94/Javascript3017テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol