首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编写了一个函数来测试数组中的每个对象是否有特定的键,即使键存在,也会不断得到false

编写了一个函数来测试数组中的每个对象是否有特定的键,即使键存在,也会不断得到false
EN

Stack Overflow用户
提问于 2021-04-08 04:17:11
回答 1查看 44关注 0票数 1

我有一个React组件,只有当数据响应中的任何项包含存档的对象键并且它是真实的时,我才尝试有条件地呈现复选框。

我已经编写了一个函数来检查每个对象,但无论如何我都会得到错误,即使我为每个对象添加了一个存档的键,我也不确定我做错了什么。

这是我当前的函数和一个有效的Codesandbox示例:

代码语言:javascript
运行
复制
    const hasArchived = (groupItems) => {
      let answer;

      for (let i = 0; i < groupItems.length; i++) {
        groupItems[i].hasOwnProperty("archived")
          ? (answer = true)
          : (answer = false);
      }

      return answer;
    };

这是groupItems数据集的一个示例:

代码语言:javascript
运行
复制
[
 [
   {
     name: 'item 1'
     groupName: 'Marvel Characters'
     archived: false
   },
   {
     name: 'item 2'
     groupName: 'Marvel Characters'
     archived: true
   },
   {
     name: 'item 3'
     groupName: 'Marvel Characters'
     archived: false
   }
 ],
 [
   {
     name: 'item 1'
     groupName: 'DC Characters'
     archived: false
   },
   {
     name: 'item 2'
     groupName: 'DC Characters'
     archived: true
   },
   {
     name: 'item 3'
     groupName: 'DC Characters'
     archived: false
   }
 ]
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-08 04:22:23

这是因为你的数组有两个层次的深度,你也可以在这个用例中使用Array.prototype.some

代码语言:javascript
运行
复制
const data = [
 [
   {
     name: 'item 1',
     groupName: 'Marvel Characters',
     archived: false
   },
   {
     name: 'item 2',
     groupName: 'Marvel Characters',
     archived: true
   },
   {
     name: 'item 3',
     groupName: 'Marvel Characters',
     archived: false
   }
 ],
 [
   {
     name: 'item 1',
     groupName: 'DC Characters',
     archived: false
   },
   {
     name: 'item 2',
     groupName: 'DC Characters',
     archived: true
   },
   {
     name: 'item 3',
     groupName: 'DC Characters',
     archived: false
   }
 ]
];

const hasArchived = groupItems => groupItems.some(x => x.some(({ archived }) => archived));


console.log(hasArchived(data));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66993563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档