145

JavaScript オブジェクトのプロパティをループすることはできますか? たとえば、次のように定義された JavaScript オブジェクトがあります。

myObject.options = {
  property1: 'value 1',
  property2: 'value 2'
};

プロパティは、このオブジェクトに動的に追加されます。プロパティが存在するかどうかをループして確認する方法はありますか? もしそうなら、どのように?

4

9 に答える 9

643

を使用し_.forOwn()ます。

_.forOwn(obj, function(value, key) { } );

https://lodash.com/docs#forOwn

オブジェクトのプロパティをループするときに通常行う必要があるため、forOwnチェックすることに注意してください。はこのチェックを行いません。hasOwnPropertyforIn

于 2014-01-23T14:31:52.257 に答える
43

はい、できます。lodashは必要ありません...つまり

for (var key in myObject.options) {
  // check also if property is not inherited from prototype
  if (myObject.options.hasOwnProperty(key)) { 
    var value = myObject.options[key];
  }
}

編集:受け入れられた回答(_.forOwn())はhttps://stackoverflow.com/a/21311045/528262である必要があります

于 2014-01-23T14:30:17.633 に答える
18

For your stated desire to "check if a property exists" you can directly use Lo-Dash's has.

var exists = _.has(myObject, propertyNameToCheck);
于 2014-01-23T14:47:16.113 に答える
0

なぜこれを lodash で行う必要があるのか​​を理解しておくと役に立ちます。オブジェクトにキーが存在するかどうかを確認するだけの場合は、lodash は必要ありません。

myObject.options.hasOwnProperty('property');

値が存在するかどうかを確認する場合は、使用できます_.invert

_.invert(myObject.options)[value]
于 2015-10-02T14:42:08.060 に答える
0

確認している場合、質問に記載されているようにオブジェクトにプロパティが存在する場合、lodash libray _.hasメソッドを使用できます

_.has(object, path)

例を挙げましょう。使い方です。

オブジェクトを検討する

    const user = {
    name : "prabhat",
    age: 27,
    height: "5.7"
   }

オブジェクトにnameプロパティが存在するかどうかを確認したい場合は、次のように_.hasメソッドを使用できます。

_.has(user, 'name') //true
_.has(user, 'address') //false

boolean見返りに真/偽を取得します。

于 2021-11-12T05:08:59.663 に答える