记得之前做项目的时候,想实现一个功能,就是让多个对象保存到前端js的Array中,且保存的内容不能重复,最后将这个保存的Array数组一次全部提交到后台,当时为了实现功能也没怎么优化代码。最后回头看看代码,感觉糟糕透顶,于是修改后成了下面的方法!
// 删除数组中第一个匹配的元素,成功则返回位置索引,失败则返回 -1 Array.prototype.deleteElementByValue = function(element) { var numDeleteIndex = -1; for (var i = 0; i < this.length; i++) { // 严格比较,即类型与数值必须同时相等 if (this[i] === element) { this.splice(i, 1); numDeleteIndex = i; continue; } } return numDeleteIndex; }使用方式如下
var tempArrays = new Array(); tempArrays.push("a"); tempArrays.push("b"); tempArrays.push("c"); tempArrays.deleteElementByValue("a");
// 验证数组中是否存在相同的元素内容 Array.prototype.isElementByValue = function(element) { for (var i = 0; i < this.length; i++) { // 严格比较,即类型与数值必须同时相等 if (this[i] === element) { return true; } } return false; }使用方式如下
var tempArrays = new Array(); tempArrays.push('a'); tempArrays.push('b'); tempArrays.push('c'); if(tempArrays.isElementByValue('c')){ tempArrays.push('d'); }else{ tempArrays.push('e'); }
// 新增数组元素,避免出现相同的元素内容 Array.prototype.addElementByValue = function(element) { if (!this.isElementByValue(element)) { this.push(element); } }使用方式如下
var tempArrays = new Array(); tempArrays.addElementByValue('a'); tempArrays.addElementByValue('b'); tempArrays.addElementByValue('c'); tempArrays.addElementByValue('a'); for(x in tempArrays){ console.log(tempArrays[x]); }以下打印的结果:

这里只打印了三个字符串,但是我们却设值了四个,原因是 设值第2个 字符串‘a’的时候发现该数组内存在字符串‘a’,所以就不会push操作了,这种设值方式对我们进行数组设值得时候去除重复还是挺有用的!
