是否可以遍历JavaScript对象中的属性?例如,我有一个定义如下的JavaScript对象:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
属性将被动态添加到此对象中。有没有一种方法可以让我只遍历并检查一个属性是否存在?如果是这样的话,是怎么做的?
发布于 2014-01-23 22:31:52
使用_.forOwn()
。
_.forOwn(obj, function(value, key) { } );
https://lodash.com/docs#forOwn
请注意,forOwn
会检查hasOwnProperty
,这是循环遍历对象属性时通常需要做的事情。forIn
不执行此检查。
发布于 2014-01-23 22:47:16
如果你想“检查一个属性是否存在”,你可以直接使用Lo-Dash的has
。
var exists = _.has(myObject, propertyNameToCheck);
发布于 2019-07-25 22:30:15
你绝对可以像stecb所展示的那样,用vanilla JS来做这件事,但我认为each
是关于如何用lodash来做这件事的核心问题的最好答案。
_.each( myObject.options, ( val, key ) => {
console.log( key, val );
} );
像提到的JohnnyHK一样,还有has
方法,它对用例很有帮助,但从最初的声明来看,set
可能更有用。假设您想要动态地向这个对象添加一些东西,就像您前面提到的:
let dynamicKey = 'someCrazyProperty';
let dynamicValue = 'someCrazyValue';
_.set( myObject.options, dynamicKey, dynamicValue );
根据最初的描述,我就是这么做的。
https://stackoverflow.com/questions/21310946
复制相似问题