后台传来的路由数据 使用比较好理解的方式去处理

本文探讨如何以直观方式处理从后台接收到的路由数据。通过JavaScript,我们将解析、组织和利用这些数据来构建动态应用程序。理解这些数据对于前端开发者至关重要,因为它允许我们根据用户的操作无缝导航和更新页面。

         

            /**
            已知后台传来的路由数据:
             pid 为父级的id
             id 为自身的id
            找出父级把子集放在父级名下
             
             * 1.遍历:找出id == pid的项
             * 2.遍历自己找自己:开辟出一个独立的空间 用于自己对比自己
             * 3.找出一项符合id == pid的项目 把索引收集到一个数组里,这些都是被移动过的 都删除或过滤
             * 4.数组根据数组条件过滤
             **/
            const arr = [ {
                  id: 2,
                  pid: 0,
                  name: '0-2'
            }, {
                  id: 3,
                  pid: 2,
                  name: '2-3'
            }, {
                  id: 5,
                  pid: 2,
                  name: '2-5'
            }, {
                  id: 6,
                  pid: 0,
                  name: '0-6'
            }, {
                  id: 7,
                  pid: 6,
                  name: '6-7'
            }, {
                  id: 8,
                  pid: 6,
                  name: '6-8'
            }, {
                  id: 5,
                  pid: 3,
                  name: '3-5'
            }, { id: 15, pid: 13, name: '3-5' },]


            // id = pid pid那一项加children属性 并把id那项存进去
            const ArrFn1 = arr => {
                  let filterArr = []
                  // id
                  arr.map(item => {
                  // pid
                        arr.map((item1,i) => {
                              if(item.id == item1.pid ){
                                    // console.log(item,item1,'item')
                                    if(!item.children){
                                          item.children = []
                                          // arr.splice(i,1)
                                    }    
                                    // console.log(item,'item')
                                    // console.log(item1,'item1')
                                    // console.log(arr,'arr')
                                    // console.log(i,'i')
                                    // console.log('==================================')
                                    item.children.push(item1)  
                                    filterArr.push(i)
                                    // arr.splice(i,1)
                              }
                  })
            })
            return deleteArr(arr,filterArr)
      }

      const deleteArr = (arr,filterArr) => {
            console.log(arr,filterArr)
            return arr.filter((item,index) => {
                  // console.log(filterArr.indexOf(index))
                  return filterArr.indexOf(index) == -1
            })
      }

      ArrFn1( arr )
      console.log( ArrFn1( arr ) )

### UE5 蓝图接收 Vue JSON 数据实现方法 要在 Unreal Engine 5 (UE5) 中通过蓝图接收来自 Vue 的 JSON 数据,可以按照以下方式进行设计和开发: #### 1. **设置服务器端以支持 Pixel Streaming 和 HTTP 请求** 在 UE5 打包后的项目中,`Windows\Engine\Source\Programs\PixelStreaming\WebServers\SignallingWebServer` 文件夹下的 `cirrus.js` 是用于处理像素流的关键文件[^1]。可以通过扩展此服务来支持自定义的 HTTP API。 修改或新增一个 Express 或其他 Node.js 框架中的路由接口,允许 Vue 应用发送 JSON 数据至该接口,并将其转发给 UE5 进程。 #### 2. **创建 HTTP 插件以便于蓝图调用** 使用 Unreal Engine 提供的插件机制,构建一个基于 C++ 的 HTTP 插件。这个插件能够监听特定 URL 并解析传入的数据。以下是基本流程: - 创建一个新的 C++ 类继承自 `UHttpListenerServiceInterface`。 - 配置插件以启动本地 Web Server 来捕获外部请求。 - 解析收到的 POST 请求体并提取 JSON 数据。 下面是一个简单的代码片段展示如何初始化 HTTP Listener: ```cpp #include "Http.h" #include "Interfaces/IHttpResponse.h" void UMyBlueprintHTTPPlugin::StartListening() { TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = FHttpModule::Get().CreateRequest(); Request->OnProcessRequestComplete().BindRaw(this, &UMyBlueprintHTTPPlugin::HandleResponse); } ``` 上述代码展示了如何建立基础框架等待响应完成事件回调函数执行逻辑操作[^2]。 #### 3. **将解码后的数据暴露给蓝图节点** 完成后台工作之后,在同一C ++类里添加一些额外的方法让它们可被BP访问到;这些方法应该负责把原始字符串形式转换成为易于理解的对象结构或者数组列表等形式呈现出来供设计师们直接拖拽连线即可轻松利用起来而无需关心底层细节部分的内容。 例如下面这段伪代码表示了一个可能的设计思路: ```cpp // 假设我们已经成功读取到了 json 字符串 FString ReceivedJsonData; UPROPERTY(BlueprintReadWrite, Category="Received Data") TArray<FString> ParsedStrings; ... void ParseAndSet(const FString& JsonStr){ // TODO: Implement actual parsing logic here. ... } // Expose this function to Blueprints so it can be called after receiving new data. UFUNCTION(BlueprintCallable, Category="Receive Data From Vue") void UpdateParsedData(){ ParseAndSet(ReceivedJsonData); } ``` 这样做的好处在于使得整个过程更加模块化同时也更贴近实际需求场景应用层面考虑得更多一点从而达到更好的用户体验效果。 --- ### 注意事项 - 确保前后端之间的时间戳同步以及必要的安全验证措施以免遭受恶意攻击行为影响正常业务运行状况良好稳定可靠长久持续发展下才行啊亲!!! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值