首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Lodash遍历JavaScript对象中的属性

使用Lodash遍历JavaScript对象中的属性
EN

Stack Overflow用户
提问于 2014-01-23 22:27:43
回答 6查看 171.9K关注 0票数 145

是否可以遍历JavaScript对象中的属性?例如,我有一个定义如下的JavaScript对象:

代码语言:javascript
复制
myObject.options = {
  property1: 'value 1',
  property2: 'value 2'
};

属性将被动态添加到此对象中。有没有一种方法可以让我只遍历并检查一个属性是否存在?如果是这样的话,是怎么做的?

EN

回答 6

Stack Overflow用户

发布于 2014-01-23 22:31:52

使用_.forOwn()

代码语言:javascript
复制
_.forOwn(obj, function(value, key) { } );

https://lodash.com/docs#forOwn

请注意,forOwn会检查hasOwnProperty,这是循环遍历对象属性时通常需要做的事情。forIn不执行此检查。

票数 643
EN

Stack Overflow用户

发布于 2014-01-23 22:47:16

如果你想“检查一个属性是否存在”,你可以直接使用Lo-Dash的has

代码语言:javascript
复制
var exists = _.has(myObject, propertyNameToCheck);
票数 18
EN

Stack Overflow用户

发布于 2019-07-25 22:30:15

你绝对可以像stecb所展示的那样,用vanilla JS来做这件事,但我认为each是关于如何用lodash来做这件事的核心问题的最好答案。

代码语言:javascript
复制
_.each( myObject.options, ( val, key ) => { 
    console.log( key, val ); 
} );

像提到的JohnnyHK一样,还有has方法,它对用例很有帮助,但从最初的声明来看,set可能更有用。假设您想要动态地向这个对象添加一些东西,就像您前面提到的:

代码语言:javascript
复制
let dynamicKey = 'someCrazyProperty';
let dynamicValue = 'someCrazyValue';

_.set( myObject.options, dynamicKey, dynamicValue );

根据最初的描述,我就是这么做的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21310946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档