您的位置:首页 > Web前端 > JavaScript

js 数组去重

2017-03-21 22:24 267 查看
/**
* Created by 26223 on 2017/3/12.
*/
function unique(array) {

let list = [];
for (let i = 0; i < array.length; i++) {
if (list.indexOf(array[i]) === -1) {
list.push(array[i]);
}
}
return list;
}
/**
* IE8不支持indexOf
*/
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (item) {

let result = -1;
let a_item = null;
if (this.length === 0) {
return result;
}
for (let i = 0; i < this.length; i++) {
a_item = this[i];
if (a_item === item) {
result = 1;
break;
}
}
return result;
}
}

/**
* 对象键值方法
*  新建一个js对象和数组,对传入的数组进行遍历,判断值是否是对象的属性,如果不是则设置为对象的属性,并放入新建的数组
* @param array
*/
function unique2(array) {

let param = {};
let list = [];
let val, type;
for (let i = 0; i < array.length; i++) {
val = array[i];
type = typeof val;
if (!param[val]) {
param[val] = [type];
list.push(val);
} else if (param[val].indexOf(type) < 0) {
param[val].push(type);
list.push(val);
}
}
return list;
}

/**
* 先排序再去重
*     对相邻的元素进行比较
* @param array
*/
function uniqueSort(array) {
array.sort();
let list = [array[0]];
for (let i = 0; i < array.length; i++) {
if (array[i] !== list[list.length - 1]) {
list.push(array[i]);
}
}
return list;
}

/**
* 双层遍历 找出最右边没有的重复的值加入到新的数组中
* @param array
* @returns {Array}
*/
function unique3(array) {

let list = [];
for (let i = 0; i < array.length; i++) {
for (let j = i + 1; j < i; j++) {
if (array[i] === array[j]) {
j = ++i;
}
}
list.push(array[i]);
}
return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 javascript 去重