点击当前元素将信息存在数组,再次点击从数组移除

Posted rainux.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了点击当前元素将信息存在数组,再次点击从数组移除相关的知识,希望对你有一定的参考价值。

Code Is Never Die !

真实场景: 昨天在做一个选中与取消选中元素的功能,需要用到频繁push(加入)remove(移除)元素的操作。

实现思路:

  1. 首先需要先判断数组中是否包含即将操作的元素;
  2. 若不存在,则将当前元素push至数组中;若存在则将当前所选元素在数组中找到并splice移除;

引入新方法: 根据数组元素的 “值” 来删除数组中当前 “值” 元素。
对数组增加内置属性方法:

Array.prototype.contains = function(obj) { 
  var i = this.length; 
  while (i--) { 
    if (this[i] === obj) { 
      return i;  // 返回的这个 i 就是元素的索引下标,
    } 
  } 
  return false; 
} // 数组内置属性方法,定义之后,后面就能直接使用conains方法arr.contains(x)就能得到x在arr数组中的下标
var arrList = ['ace','mvp','ceo','dancer']; 
arrList.splice(arrList.contains('ceo'),1)  //通过这样在数组中就能删除ceo这个元素

完整实现:

// 定义数组内置属性方法,以备后面使用
Array.prototype.contains = function(obj) { 
        var i = this.length; 
        while (i--) { 
          if (this[i] === obj) { 
            return i;  // 返回的这个 i 就是元素的索引下标,
          } 
        } 
        return false; 
      }
let isExist = choseNodes.indexOf(e.item.model.id)// 首先判断数组中是否存在当前元素,根据isExist受否为-1
this.flowChartData.forEach((i) => { // 从当前数组flowChartData中找到当前点击的元素
    if (e.item.model.id == i.id &&isExist === -1) {
        choseNodes.push(e.item.model.id)
        // i.color = "red"
    }else if(e.item.model.id == i.id &&isExist != -1){
        // i.color = "#d7e8f0"
        choseNodes.splice(choseNodes.contains(e.item.model.id),1)
    }
})

欢迎大家交流学习,感觉这样做麻烦了很多,希望大神能指导一二

以上是关于点击当前元素将信息存在数组,再次点击从数组移除的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎样向数组里添加一个元素?还有...

从数组中一一获取元素并创建按钮

在JAVA中如何从数组中删除一个元素

angularJs获取复选框中id 进行批量删除

从微调器中移除焦点

当不透明度为 0% 时从元素中移除点击