首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回对象数组中对象数组中的项

返回对象数组中对象数组中的项
EN

Stack Overflow用户
提问于 2021-04-14 19:10:10
回答 1查看 42关注 0票数 0

我试图根据嵌套数组对象中的布尔值返回主对象中的值。如果主数组中的值为真,那么它应该查找子数组中的槽,并只返回那些为真的槽。我已经尝试了很长一段时间,但似乎找不到解决方案。它返回嵌套数组中的所有对象,无论是true还是false。会很感谢你的帮助。

代码语言:javascript
运行
复制
  const DATA = [
  {
  day: 'Monday',
  label: 'Monday',
  checked: false,**strong text**
  slots: [
    {slot: '9-10', checked: false},
    {slot: '10-11', checked: false},
  ],
},
{
  day: 'Tuesday',
  label: 'Tuesday',
  checked: false,
  slots: [
    {slot: '9-10', checked: false},
    {slot: '10-11', checked: false},
  ],
},
{
  day: 'Wednesday',
  label: 'Wednesday',
  checked: false,
  slots: [
    {slot: '9-10', checked: false},
    {slot: '10-11', checked: false},
  ],
},
{
  day: 'Thursday',
  label: 'Thursday',
  checked: false,
  slots: [
    {slot: '9-10', checked: false},
    {slot: '10-11', checked: false},
  ],
},
{
  day: 'Friday',
  label: 'Friday',
  checked: false,
  slots: [
    {slot: '9-10', checked: false},
    {slot: '10-11', checked: false},
  ],
},
{
  day: 'Saturday',
  label: 'Saturday',
  checked: false,
  slots: [
    {slot: '9-10', checked: false},
    {slot: '10-11', checked: false},
  ],
},

];

代码语言:javascript
运行
复制
  useEffect(() => {
  setDaysCollection(DATA);
  }, []);
  const selectedDays = daysCollection.filter(
  (item: any) =>
    item.checked == true &&
    item.slots.filter(r => r.checked == true),
  );
 setSelectedItem(selectedDays);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-14 19:25:25

Array.prototype.filter()需要一个布尔型返回值,虽然您可以使用它来改变原始数组,但使用返回的数组更简洁。

下面是一个使用some()断言已检查插槽的示例,以及进一步过滤嵌套数组的map()调用。

代码语言:javascript
运行
复制
//{ day: 'Tuesday', label: 'Tuesday', checked: true, slots: [{ slot: '9-10', checked: false }, { slot: '10-11', checked: true },], }
const DATA = [{ day: 'Monday', label: 'Monday', checked: false, slots: [{ slot: '9-10', checked: false }, { slot: '10-11', checked: false },], }, { day: 'Tuesday', label: 'Tuesday', checked: true, slots: [{ slot: '9-10', checked: false }, { slot: '10-11', checked: true },], }, { day: 'Wednesday', label: 'Wednesday', checked: false, slots: [{ slot: '9-10', checked: false }, { slot: '10-11', checked: false },], }, { day: 'Thursday', label: 'Thursday', checked: false, slots: [{ slot: '9-10', checked: false }, { slot: '10-11', checked: false },], }, { day: 'Friday', label: 'Friday', checked: false, slots: [{ slot: '9-10', checked: false }, { slot: '10-11', checked: false },], }, { day: 'Saturday', label: 'Saturday', checked: false, slots: [{ slot: '9-10', checked: false }, { slot: '10-11', checked: false },], },];

const result = DATA
  .filter(({ checked, slots }) =>
    checked && slots.some(({ checked }) => checked)
  )
  .map(o => ({ ...o, slots: o.slots.filter(({ checked }) => checked) }));

console.log(result);

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

https://stackoverflow.com/questions/67090573

复制
相关文章

相似问题

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