[解決済み] FreeCodeCamp: "Record Collection "で行き詰っています。
質問内容
Freecodecampのチュートリアルをやっているのですが、行き詰ってしまいました。 こちら . 次のコードを書いたが、それは鋼が動作しません。
function updateRecords(id, prop, value) {
if(value!==""){
if(prop==="tracks")
collection[id][prop].push(value);
else
collection[id][prop] =value;
}else
delete collection[id][prop];
return collection;
}
誰か助けてください!!!
どのように解決するのですか?
この問題に挑戦してみました。以下の解決策でうまくいくはずです。わかりやすいように、1行に1つずつif文を追加しています。もし説明が必要なら教えてください。
function updateRecords(id, prop, value) {
if (prop === "tracks" && (!(collection[id]).tracks)) {collection[id].tracks = [];}
if (prop === "tracks" && value !== "") {collection[id].tracks.push(value);}
else if (prop !== "tracks" && value !== "") {collection[id][prop] = value;}
else if (value === "") {delete collection[id][prop];}
return collection;
}
また、今後の参考のために、問題の説明を以下に示します。
==========
あなたの音楽アルバムコレクションの一部を表すJSONオブジェクトが与えられます。各アルバムにはいくつかのプロパティがあり、キーとして一意のID番号があります。すべてのアルバムが完全な情報を持っているわけではありません。
アルバムのID(2548など)、プロパティのprop("artist"や"tracks"など)、および値("Addicted to Love")を取って、このコレクション内のデータを修正する関数を記述してください。
propが"tracks"でなく、valueが空("")でない場合、そのレコードアルバムのプロパティに対する値を更新または設定します。
関数は、常にコレクションオブジェクト全体を返す必要があります。
不完全なデータの取り扱いには、いくつかのルールがあります。
prop が "tracks" であっても、アルバムに "tracks" プロパティがない場合、新しい値をアルバムの対応するプロパティに追加する前に、空の配列を作成します。
prop が "tracks" で value が空でない場合 ("") は、その値をアルバムの既存の tracks 配列の末尾にプッシュしてください。
valueが空の場合("")、アルバムから指定されたpropプロパティを削除します。
===========
関連
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】最大呼び出しスタックサイズ超過エラーとその修正方法とは?
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない
-
[解決済み] REST APIからデータを取得しようとしたときに、要求されたリソースに'Access-Control-Allow-Origin'ヘッダーが存在しない。
-
[解決済み] 非同期関数+await+setTimeoutの組合せ
-
[解決済み] なぜ、同じ行で無名関数を呼び出す必要があるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない