Code Is Never Die !
真实场景: 昨天在做一个选中与取消选中元素的功能,需要用到频繁push(加入)
和remove(移除)
元素的操作。
实现思路:
- 首先需要先判断数组中是否包含即将操作的元素;
- 若不存在,则将当前元素
push
至数组中;若存在则将当前所选元素在数组中找到并splice
移除;
引入新方法: 根据数组元素的 “值” 来删除数组中当前 “值” 元素。
对数组增加内置属性方法:
Array.prototype.contains = function(obj) { var i = this.length; while (i--) { if (this[i] === obj) { return i; } } return false; } var arrList = ['ace','mvp','ceo','dancer']; arrList.splice(arrList.contains('ceo'),1)
|
完整实现:
Array.prototype.contains = function(obj) { var i = this.length; while (i--) { if (this[i] === obj) { return i; } } return false; } let isExist = choseNodes.indexOf(e.item.model.id) this.flowChartData.forEach((i) => { if (e.item.model.id == i.id &&isExist === -1) { choseNodes.push(e.item.model.id) }else if(e.item.model.id == i.id &&isExist != -1){ choseNodes.splice(choseNodes.contains(e.item.model.id),1) } })
|
欢迎大家交流学习,感觉这样做麻烦了很多,希望大神能指导一二