Javascript 谁能给我解释一下这个Object.keys(这个对象).forEach((键)
有人能给我解释一下这个代码片段吗?有没有简单的方法来编写它Javascript 谁能给我解释一下这个Object.keys(这个对象).forEach((键),javascript,arrays,object,Javascript,Arrays,Object,有人能给我解释一下这个代码片段吗?有没有简单的方法来编写它 Object.keys(this_obj).forEach((key) => { if (key === 'string') { result.push(this_obj[key]); return result; } }); 不需要迭代,因为如果对象上有一个名为string的键,循环最多只会推送到结果(这可能已经定义),并且只会推送到字符串键处的
Object.keys(this_obj).forEach((key) => {
if (key === 'string') {
result.push(this_obj[key]);
return result;
}
});
不需要迭代,因为如果对象上有一个名为
string
的键,循环最多只会推送到结果(这可能已经定义),并且只会推送到字符串
键处的值。因此,这里有一个更简单的方法来编写它:
if (this_obj.hasOwnProperty('string')) {
result.push(this_obj.string);
}
如果string
可能不可枚举,那么这将与对象.keys
循环不完全相同,因为对象.keys
仅迭代可枚举属性,因此如果需要,可以使用可枚举检查:
if (this_obj.propertyIsEnumerable('string')) {
result.push(this_obj.string);
}
(propertyEnumerable
如果属性不直接位于对象上,则返回false
)
我假设在非常奇怪的情况下,这个对象也有一个自定义的hasOwnProperty
或propertyEnumerable
键,您应该调用它:
if (Object.prototype.propertyIsEnumerable.call(this_obj, 'string')) {
result.push(this_obj.string);
}
…它只是将键名字符串带入结果中有些问题…result
未定义,从forEach
回调返回时不会产生任何结果,此对象已定义为对象。键通常用于转换数据类型,例如从对象到对象数组。