JavaScript オブジェクトのプロパティをループすることはできますか? たとえば、次のように定義された JavaScript オブジェクトがあります。
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
プロパティは、このオブジェクトに動的に追加されます。プロパティが存在するかどうかをループして確認する方法はありますか? もしそうなら、どのように?
JavaScript オブジェクトのプロパティをループすることはできますか? たとえば、次のように定義された JavaScript オブジェクトがあります。
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
プロパティは、このオブジェクトに動的に追加されます。プロパティが存在するかどうかをループして確認する方法はありますか? もしそうなら、どのように?
を使用し_.forOwn()
ます。
_.forOwn(obj, function(value, key) { } );
https://lodash.com/docs#forOwn
オブジェクトのプロパティをループするときに通常行う必要があるため、forOwn
チェックすることに注意してください。はこのチェックを行いません。hasOwnProperty
forIn
はい、できます。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である必要があります
For your stated desire to "check if a property exists" you can directly use Lo-Dash's has
.
var exists = _.has(myObject, propertyNameToCheck);
なぜこれを lodash で行う必要があるのかを理解しておくと役に立ちます。オブジェクトにキーが存在するかどうかを確認するだけの場合は、lodash は必要ありません。
myObject.options.hasOwnProperty('property');
値が存在するかどうかを確認する場合は、使用できます_.invert
_.invert(myObject.options)[value]
確認している場合、質問に記載されているようにオブジェクトにプロパティが存在する場合、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
見返りに真/偽を取得します。