gpt4 book ai didi

javascript - hasOwnProperty 具有多个属性

转载 作者:行者123 更新时间:2023-12-04 00:58:32 26 4
gpt4 key购买 nike

我试图发现一个对象是否具有某些属性并且我在使用 hasOwnProperty 方法时遇到了问题。

我在数组上使用该方法(我知道文档说明了一个字符串)。

以下行返回 true:

{ "a": 1, "b": 2 }.hasOwnProperty( ["a"]);

此行也返回 true:
{ "a": 1, "b": 2 }.hasOwnProperty( "a", "b");

但是这个返回false:
{ "a": 1, "b": 2 }.hasOwnProperty( ["a", "b"])

我需要它返回true。我正在使用 Object.keys(object) 来获取我正在使用的属性,它返回一个数组,所以我需要在 hasOWnProperty 上使用一个数组。

我缺少一些理论概念吗?有没有办法解决这个问题?

最佳答案

这里有两件事。

一、hasOwnProperty只接受一个论点。所以它会忽略你传递给它的任何其他参数。

其次,(我在这里稍微简化一下)它将第一个参数转换为 字符串 ,然后检查对象是否具有该属性。

所以让我们看看你的测试用例:

原因{ "a": 1, "b": 2 }.hasOwnProperty( "a", "b");返回 true是因为它是 忽略第二个参数 .所以实际上它只是检查“a”。
{ "a": 1, "b": 2 }.hasOwnProperty( ["a", "b"])返回 false因为第一个参数 ["a", "b"] , 转换为 "a,b" ,并且没有 { "a": 1, "b": 2 }["a,b"] .

找出给定对象是否有 全部 数组中的属性,您可以遍历数组并检查每个属性,如下所示:

function hasAllProperties(obj, props) {
for (var i = 0; i < props.length; i++) {
if (!obj.hasOwnProperty(props[i]))
return false;
}
return true;
}

或者,如果您喜欢,可以使用 every隐式执行此操作的函数:
var props = ["a", "b"];
var obj = { "a": 1, "b": 2 };
var hasAll = props.every(prop => obj.hasOwnProperty(prop));

我希望这有助于澄清事情。祝你好运!

关于javascript - hasOwnProperty 具有多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48653543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com