Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谁能给我解释一下这个Object.keys(这个对象).forEach((键)_Javascript_Arrays_Object - Fatal编程技术网

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
回调返回时不会产生任何结果,此对象已定义为对象。键通常用于转换数据类型,例如从对象到对象数组。