最笨的方法:
var list = [1, 2, 3, 6, 7, 8, 9, 1, 2, 3, 6]//有重复的数组var obj = {}//用于标记字符串
var arr = []//去掉重复后的数组
for (var i = 0, len = list.length i < len i++) {
var s = list[i]
if (obj[s]) continue//如果字符串已经存在就跳过
else {
obj[s] = s//加入标记对象中
arr.push(s)//结果放入新数组中
}
}
当jquery中有封装好的去重复方法,还有其他第三方js插件也存在去重复的方法。
1,对象数组去重
2,用js实现将二维数组格式化转换成树状数组
3,将树结构数据转换为一维数组
4, 数组去重
function clear(arr) {// 1 如何获取数组中每一个元素出现的次数
var o = {}// 1.1 记录数组中元素出现的次数
for (var i = 0i <arr.lengthi++) {
var item = arr[i]// 数组中的每一个元素
// o[item] = 1
// 1.2 判断o对象是否有当前遍历到的属性
if (o[item]) {
// 如果o[item] 存在,说明次数不为1
o[item]++
} else {
// 如果o[item] 不存在,说明是第一次出现
o[item] = 1
}
}
// console.log(o)
// 2 生成一个新的数组,存储不重复的元素
var newArray = []
// 2.1 遍历对象o中的所有属性
for (var key in o) {
// 2.2 判断o对象中当前属性的值是否为 1 如果为1 说明不重复直接放到新数组中
if (o[key] === 1) {
newArray.push(key)
} else {
// o对象中当前属性 次数不为1 ,说明有重复的,如果有重复的话,只存储一次
// 判断当前的newArray数组中是否已经有该元素
if (newArray.indexOf(key) === -1) {
newArray.push(key)
}
}
}
return newArray
}
var array = ['c', 'a', 'z', 'a', 'x', 'a']
var newArray = clear(array)
console.log(newArray)