use*_*277 113 javascript lodash
是否可以遍历JavaScript对象中的属性?例如,我有一个JavaScript对象定义如下:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
Run Code Online (Sandbox Code Playgroud)
属性将动态添加到此对象.有没有办法让我循环检查一个属性是否存在?如果是这样,怎么样?
dje*_*lin 581
使用_.forOwn()
.
_.forOwn(obj, function(value, key) { } );
Run Code Online (Sandbox Code Playgroud)
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];
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:接受的答案(_.forOwn())应为/sf/answers/1491773181/
Joh*_*yHK 17
对于您所说的"检查房产是否存在"的愿望,您可以直接使用Lo-Dash has
.
var exists = _.has(myObject, propertyNameToCheck);
Run Code Online (Sandbox Code Playgroud)
你绝对可以像 stecb 展示的那样使用 vanilla JS 做到这一点,但我认为这each
是关于如何使用 lodash 做到这一点的核心问题的最佳答案。
_.each( myObject.options, ( val, key ) => {
console.log( key, val );
} );
Run Code Online (Sandbox Code Playgroud)
就像 JohnnyHK 提到的,也has
有对用例有用的方法,但从最初所说的set
可能更有用。假设你想像你提到的那样动态地向这个对象添加一些东西:
let dynamicKey = 'someCrazyProperty';
let dynamicValue = 'someCrazyValue';
_.set( myObject.options, dynamicKey, dynamicValue );
Run Code Online (Sandbox Code Playgroud)
根据原始描述,我就是这样做的。
归档时间: |
|
查看次数: |
128410 次 |
最近记录: |