首页 > 其他分享 >VUE里的find与filter使用与区别

VUE里的find与filter使用与区别

时间:2023-02-27 14:03:11浏览次数:32  
标签:canvas VUE const modeler filter completeTask id highlight find


一、find方法 (返回符合条件的第一个元素 如果没有符合条件的 返回undefined) findIndex方法(返回符合条件的第一个元素位置 如果没有符合条件的返回 -1)

比如:

const modeler = this.$refs.refNode.modeler;
        const canvas = modeler.get('canvas')
        console.log("fillColor modeler=",modeler)
        modeler._definitions.rootElements[0].flowElements.forEach(n => {
        const completeTask = this.taskList.find(m => m.key === n.id)

        要是满足条件的元素有多个,上面返回满足条件的第一个元素,所以即使满足条件有多个,也只返回第一个

二、filter方法 (返回 符合过滤条件的元素组成的新数组)

比如:

const modeler = this.$refs.refNode.modeler;
        const canvas = modeler.get('canvas')
        console.log("fillColor modeler=",modeler)
        modeler._definitions.rootElements[0].flowElements.forEach(n => {
          const completeTask = this.taskList.filter(m => m.key === n.id)

       要是满足上面条件有多个元素,上面方法就返回满足条件的多个元素。

三、实际流程显示的bug修复

       对于流程流转过程中,流程对某个节点可能又多次的通过与退回情况,所以就会存在满足一个节点的有多个任务处理情况,原先用find函数就只能返回一个元素,不符合实际情况,所以进行修改,改用filter 如下:

fillColor() {
const modeler = this.$refs.refNode.modeler;
const canvas = modeler.get('canvas')
console.log("fillColor modeler=",modeler)
modeler._definitions.rootElements[0].flowElements.forEach(n => {
//const completeTask = this.taskList.find(m => m.key === n.id)
const completeTask = this.taskList.filter(m => m.key === n.id)
const todoTask = this.taskList.find(m => !m.completed)
const endTask = this.taskList[this.taskList.length - 1]
if (n.$type === 'bpmn:UserTask') {
if (completeTask) {
canvas.addMarker(n.id, completeTask[completeTask.length-1].completed ? 'highlight' : 'highlight-todo')
//canvas.addMarker(n.id, completeTask.completed ? 'highlight' : 'highlight-todo')
n.outgoing.forEach(nn => {
const targetTask = this.taskList.find(m => m.key === nn.targetRef.id)
if (targetTask) {
if (todoTask && completeTask.key === todoTask.key && !todoTask.completed) {
canvas.addMarker(nn.id, todoTask.completed ? 'highlight' : 'highlight-todo')
canvas.addMarker(nn.targetRef.id, todoTask.completed ? 'highlight' : 'highlight-todo')
} else {
canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo')
canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo')
}
}
})
}
}

四、效果图如下:

VUE里的find与filter使用与区别_前端

 

标签:canvas,VUE,const,modeler,filter,completeTask,id,highlight,find
From: https://blog.51cto.com/u_15070324/6088399

相关文章

  • VUE里父组件与子组件的交互操作
        在开发vue前端项目时,经常会遇到父组件与子组件之间的相互操作,比如有时候父组件需要知道子组件的触发事件,以便对这个触发事件进行响应,同时附组件也要传递数据给子......
  • vue源码分析-动态组件
    前面花了两节的内容介绍了组件,从组件的原理讲到组件的应用,包括异步组件和函数式组件的实现和使用场景。众所周知,组件是贯穿整个Vue设计理念的东西,并且也是指导我们开发的......
  • 2023前端vue面试题汇总
    Vuex有哪几种属性?有五种,分别是State、Getter、Mutation、Action、Modulestate=>基本数据(数据源存放地)getters=>从基本数据派生出来的数据mutations=>提交......
  • vue源码分析-响应式系统(一)
    从这一小节开始,正式进入Vue源码的核心,也是难点之一,响应式系统的构建。这一节将作为分析响应式构建过程源码的入门,主要分为两大块,第一块是针对响应式数据props,methods,da......
  • 前端vue面试题(持续更新中)
    vue-router中如何保护路由分析路由保护在应用开发过程中非常重要,几乎每个应用都要做各种路由权限管理,因此相当考察使用者基本功。体验全局守卫:constrouter=createR......
  • Vue 基础
    模板语法Vue使用一种基于HTML的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的DOM上。所有的Vue模板都是语法层面合法的HTML,可以被符合规范的浏览器......
  • vue的两种服务器端渲染方案
    作者:京东零售姜欣关于服务器端渲染方案,之前只接触了基于react的Next.js,最近业务开发vue用的比较多,所以调研了一下vue的服务器端渲染方案。首先:长文预警,下文包括了两种方......
  • vue的element,el-select与el-tree配合使用,实现下拉树状
    HTML<el-selectref="stlectTree"v-model="treeSelectText"placeholder="请选择"size="small"><el-option:value="tre......
  • Vue 关键概念介绍
    Vue现在已经迭代到3+版本,阅读官方文档的过程中发现作者的一些理念和思路很合我口味,很多概念与方案都是基于解决实际问题提出并实现的,且在权衡利弊后勇于打破常规,比如如何......
  • vue3 门户网站搭建4-mockjs
    在后端接口没做好之前,为了更好的模拟接口返回,引入mockjs。它可以拦截ajax请求,生成伪数据。 1、安装:npmimokjs-D、npmi vite-plugin-mock-D2、在vite.confi......