use*_*277 113 javascript lodash
是否可以遍历JavaScript对象中的属性?例如,我有一个JavaScript对象定义如下:
myObject.options = {
  property1: 'value 1',
  property2: 'value 2'
};
属性将动态添加到此对象.有没有办法让我循环检查一个属性是否存在?如果是这样,怎么样?
dje*_*lin 581
使用_.forOwn().
_.forOwn(obj, function(value, key) { } );
https://lodash.com/docs#forOwn
请注意,在循环对象的属性时通常需要进行forOwn检查hasOwnProperty.forIn不做这个检查.
ste*_*ecb 32
是的你可以和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())应为/sf/answers/1491773181/
Joh*_*yHK 17
对于您所说的"检查房产是否存在"的愿望,您可以直接使用Lo-Dash has.
var exists = _.has(myObject, propertyNameToCheck);
你绝对可以像 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 );
根据原始描述,我就是这样做的。
| 归档时间: | 
 | 
| 查看次数: | 128410 次 | 
| 最近记录: |