我一直在寻找这个问题的解决方案,但很难应用给出的任何解决方案.我正在使用JavaScript/React,所以我需要一个JS解决方案.

对象从数据库返回,其 struct 如下,

source.source.源(三个级别,所有子级都称为源).

第一个信源是一个对象,第二个信源也是一个对象,第三个信源是一个包含所有元素的array.

数组中的每个元素都有一个属性"isActive",如中所示

source.source.source.isActive

我以为下面的代码会保留整个对象,但它会丢失两个父 node 和所有数据(source和source),并且只返回嵌套在source.source中的array.我需要过滤axios返回的整个对象.

const responseDataFiltered = source.source.source.filter(obj => Boolean(obj.isActive) === true)

我需要一种方法来保留所有父元素,同时只显示具有isActive===true的数组元素.

我试图实现的是过滤来自数据库的响应,其中返回的元素的属性isActive设置为true,并且我需要主 struct /父元素.因此,本质上,我需要一个主父元素源的副本,其中包含嵌套数据,但过滤掉所有isActive===false.

我使用Axios从api获取数据.响应是具有深度嵌套数组的整个对象,其中包含我需要在isActive上过滤的数千个元素.一旦返回的对象过滤掉了所有isActive===false,我想将其传递给useState挂钩并显示数据.

推荐答案

您只需用过滤器数据替换嵌套数组:

const source = {
    one: 1,
    two: 2,
    source:{
        three: 3,
        four: 4,
        source: [
            {isActive: true},
            {isActive: true},
            {isActive: false},
            {isActive: false},
        ],
    },
};

const actives = source.source.source.filter(({ isActive }) => isActive);
const responseDataFiltered = {
  ...source, 
  source: {
    ...source.source, 
    source: actives,
  },
};

console.log(responseDataFiltered);
.as-console-wrapper { max-height: 100% !important; top: 0 }

Javascript相关问答推荐

为什么从liveWire info js代码传递数组我出现错误?

使用i18next在React中不重新加载翻译动态数据的问题

在这种情况下,如何 for each 元素添加id?

有没有可能使滑动img动画以更快的速度连续?

如何调用名称在字符串中的实例方法?

简单的PayPal按钮集成导致404错误

并不是所有的iframe都被更换

Next.js服务器端组件请求,如何发送我的cookie token?

为什么我的getAsFile()方法返回空?

确保函数签名中的类型安全:匹配值

如何将数组用作复合函数参数?

为什么当我更新数据库时,我的所有组件都重新呈现?

OnClick更改Json数组JSX中的图像源

当我点击一个按钮后按回车键时,如何阻止它再次被点击

Node.js API-queryAll()中的MarkLogic数据移动

用于测试其方法和构造函数的导出/导入类

为什么这个最小Angular 的Licial.dev设置不起作用?

计算对象数组中属性的滚动增量

JavaScript structuredClone在Chrome/Edge中获得了非法调用,但在NodeJS中没有

如何将PNG图像放在wix站点的Open Streemap map 上,使PNG图像成为 map 不可分割的一部分?