Freecodecamp: 不可解な変数を使用してオブジェクトのプロパティにアクセスしますか?

作成日 2016年12月21日  ·  10コメント  ·  ソース: freeCodeCamp/freeCodeCamp


チャレンジ名


変数を使用したオブジェクトプロパティへのアクセス

問題の説明


この挑戦は私を混乱させます。 オブジェクトへのアクセスに関する以前の課題以降。 角かっこは、アクセスする必要のあるプロパティにスペースがある場合にのみ使用する必要があることを読みました。 そして今、このチャレンジでは、プロパティにスペースがない場合にブラケット表記を使用することを望んでいます

help wanted

最も参考になるコメント

@ChrisKissoonブラケット表記は、プログラムの実行中に名前が動的に収集されるプロパティにアクセスする必要がある場合に役立ちます。
例えば

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

冗長すぎない場合は、説明でこの概念を説明できます。

全てのコメント10件

/ cc @ FreeCodeCamp / moderators
指示にさらに説明が必要な場合、誰かがトリアージを支援できますか? 私は偏見があるかもしれませんが、彼らは私にはまっすぐに見えます。

@ChrisKissoonブラケット表記は、プログラムの実行中に名前が動的に収集されるプロパティにアクセスする必要がある場合に役立ちます。
例えば

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

冗長すぎない場合は、説明でこの概念を説明できます。

@ Emt-Antに感謝します。さらに明確にするために、手順を更新する必要がありますか? あなたの意見?

@raisedadead @ Em-Ant、
私は混乱を理解することができます、より明確に更新することは良い考えのように聞こえます。

このような例を持つ新しい人々のために:

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

「同じことをしているのに、myObj.propNameだけをやらないのはなぜですか」と考えるのは簡単です。

繰り返しますが、2番目の例:

var myDog = "Hunter";
var dogs = {
  Fido: "Mutt",
  Hunter: "Doberman",
  Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed);// "Doberman"

同じことをします。 値を変数に付加するだけです。 なぜ変数が必要なのですか? @ Em-Antが言ったように、変数が動的に変更される例を追加する必要があると確信しています。 変数を文字列と同じに設定してその変数を使用しているだけでは、意味がありません。 ドット表記を使用する方が実用的です。 ドット表記の代わりに最初に変数を使用する必要がある理由を説明しない限り、この課題は意味がありません。 したがって、私の投票は、別の例を追加し、変数を使用する理由を明確にすることです。

@IsaacAbrahamsonありがとう。

コントリビューターは、 Updating Object Propertiesとともにこのチャレンジをリファクタリングする必要があります。 プルリクエストを行う前に、両方のリファクタリングの提案を以下にコメントしてください。

/ cc @erictleungの考え?

また、 @ systimoticを確認してhttps://github.com/FreeCodeCamp/FreeCodeCamp/issues/12125#issuecomment -269246606

こんにちは@raisedadead
オブジェクト表記に関連するすべての問題を読んだことで、初心者には明らかではないことがわかりました。 彼らは私にはまっすぐに見えた。 さらに簡単にするために、これらの変更を行うのはどうですか。

オブジェクトへのアクセス:(https://github.com/FreeCodeCamp/FreeCodeCamp/issues/12141)

var currency = {
   USA  : "dollar",
   London : "euro",
   India : "rupee",
}
function getCurrency(country){
 return country +" currency is "+currency[country] +" ";
}
getCurrency("USA") // "USA currency is dollar" 

オブジェクトの更新に問題はありません。 私が間違っている場合は私を訂正してください。
ネストされたオブジェクトのチャレンジを追加することを考えています。 これを改善するために私がどのように役立つことができるか教えてください。

@raisedadeadこのオブジェクトの問題に対処できるかどうか見てみましょう。

コントリビューターは、 Updating Object Propertiesとともにこのチャレンジをリファクタリングする必要があります。 プルリクエストを行う前に、両方のリファクタリングの提案を以下にコメントしてください。

したがって、オブジェクトの最初の課題である「JavaScriptオブジェクトの構築」では、サンプルオブジェクトのすべてのプロパティが文字列になっています。 たぶん、次のような異なる型指定されたプロパティを持つ別のサンプルオブジェクトを追加できます。

var sampleObject = {
  property_1: "Green",
  2: "Hal",
  "property_3": "Lantern"
};

これはもっと紛らわしいかもしれませんが、オブジェクトの可能性を探求しているため、キャンパーは少し調査する必要があります。 さらに、「変数を使用してオブジェクトのプロパティにアクセスする」のシードコードには、プロパティとして番号があります。これは、オブジェクトに関するこれまでの3つの課題では示されていません。


角かっこは、アクセスする必要のあるプロパティにスペースがある場合にのみ使用する必要があることを読みました。

これは、 「ブラケット表記を使用したオブジェクトプロパティへのアクセス」で説明されているブラケット表記を変更することで修正できます。 説明書

アクセスしようとしているオブジェクトのプロパティにスペースが含まれている場合は、角かっこ表記を使用する必要があります。

次のようなものに変更できます

アクセスしようとしているオブジェクトのプロパティにスペースが含まれている場合は、角かっこ表記を使用する必要があります。 ただし、スペースを含まないプロパティでは引き続きブラケット表記を使用できます。

次に、サンプルオブジェクトを変更して、スペースなしのプロパティも持つことができることを示します。

var myObj = {
  "Space Name": "Kirk",
  "More Space": "Spock",
  "NoSpace": "USS Enterprise"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"];    // USS Enterprise

「変数を使用してオブジェクトプロパティにアクセスする」の場合、たとえば最初の例を置き換える@ Em-Antの提案、つまり削除が好きです。

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

dogsオブジェクトの例を最初の例として移動し、次のようにします。

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name");
console.log(obj[someProp]); // "John"

2番目の例として。

ブラケット表記は、オブジェクトを操作するためのより動的な形式であると言ってはどうでしょうか。 数字で始めたり、プロパティ名としてスペースを含む文字列aを使用したりするなど、JavaScriptの宣言規則のほとんどから外れる文字列を使用できます。 角かっこ内に変数を配置して、プロパティをその場で、または何らかの副作用を介して割り当てることもできます。 たとえば、プログラムにオブジェクトがあり、作成時にプロパティが何である必要があるかわからない場合は、実行時にプログラムがそれらを割り当てることができるようにします。

このページは役に立ちましたか?
0 / 5 - 0 評価