如何检查对象内的动态属性的存在?

发布于 2025-01-19 09:37:26 字数 782 浏览 2 评论 0原文

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}
const result = {
    "MEN": [],
    "WOMEN": [],
    "CHILDREN TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

我有一个像上面这样的对象 result 。有时,它可能具有 KIDS TEMP 属性,有时可能具有 CHILDREN TEMP。由于此属性有空格,我无法使用点运算符来获取这些属性。 如果 KIDS TEMPCHILDREN TEMP 存在,我想创建一个标志。 我尝试了以下方法:-

const part = 'KIDS TEMP' || 'CHILDREN TEMP';
    let check;
    if (result) {
      check = !!(result?.MEN.length !== 0 || result[part].length !== 0);
    }

但是当我收到 CHILDREN TEMP 说它无法读取未定义的长度时,上面的代码就中断了。 我该如何解决这个问题?

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}
const result = {
    "MEN": [],
    "WOMEN": [],
    "CHILDREN TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

I have an object result like above. Sometimes, it may have KIDS TEMP property and sometimes CHILDREN TEMP. Since this property has spaces, I cannot use dot operator to fetch these properties.
I want to create a flag if either of KIDS TEMP or CHILDREN TEMP exist.
I tried below:-

const part = 'KIDS TEMP' || 'CHILDREN TEMP';
    let check;
    if (result) {
      check = !!(result?.MEN.length !== 0 || result[part].length !== 0);
    }

But the above code breaks when I receive CHILDREN TEMP saying that it cannot read length of undefined.
How do I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

江心雾 2025-01-26 09:37:26

Object.keys() 返回对象的属性名称。你可以这样检查一个对象是否拥有某个属性:

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

console.log(Object.keys(result).includes("KIDS TEMP"));
console.log(Object.keys(result).includes("CHILDREN TEMP"));

如果你想测试某个属性是否存在,并且如果存在,则包含一个非空数组,你可以这样测试:

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

console.log(result["KIDS TEMP"]?.length > 0);
console.log(result["CHILDREN TEMP"]?.length > 0);

您的代码的主要问题是 const part = string1 || string2 始终计算为 string1,这不是您想要做的。

Object.keys() returns the property names of an object. You can check like this, if an object possesses a certain property:

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

console.log(Object.keys(result).includes("KIDS TEMP"));
console.log(Object.keys(result).includes("CHILDREN TEMP"));

If you want to test, if a certain attribute exists, and in case it exists, contains a non-empty array, you can test it like this:

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

console.log(result["KIDS TEMP"]?.length > 0);
console.log(result["CHILDREN TEMP"]?.length > 0);

The main problem with your code is that const part = string1 || string2 always evaluates to string1, which is not what you intend to do.

靖瑶 2025-01-26 09:37:26

您可以使用对象的方法 hasOwnProperty它将返回 true/false 取决于属性是否存在于对象中。

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

console.log(result.hasOwnProperty('KIDS TEMP'),result.hasOwnProperty('CHILDREN TEMP'));

You can use Object's method hasOwnProperty it will return true/false depends on if property exists in object or not.

const result = {
    "MEN": [],
    "WOMEN": [],
    "KIDS TEMP": [
        "BCDEFHJJJJJJ34EEE234",
        "ABCDEFGHIJKL12345678"
    ]
}

console.log(result.hasOwnProperty('KIDS TEMP'),result.hasOwnProperty('CHILDREN TEMP'));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文