1. ホーム
  2. javascript

[解決済み] FreeCodeCamp: "Record Collection "で行き詰っています。

2022-02-06 05:25:47

質問内容

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プロパティを削除します。

===========