这是我第一次写博客,也是为了总结知识用,和大家分享一下,有不足之处还请多多提建议!!!!!!(注释都是本人自己的理解而已。。。。。。)
请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请
看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看
干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干
货货货货货货货货货货货货货货货货货货货货货货货货货货货货货货
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
js中数组的去重
- ①原生的js去重
- ②通过对象去重
- ③通过数组方法indexOf去重
- ④通过ES6中的Array.from和 Set方法去重
- ⑤jQuery中的去重方法
js原生去重第一种:
var arr = [1, 2, 5, 3, 6, 5, 1, 2, 8, 8, 9];
/* 方法一================== */
/* 通过把传入数组第一项给了新数组,遍历两个数组,通过设置布尔值,来判断两个数组中的数是否一样 */
function a(arr) {
var there = [arr[0]]; //将数组的第一项放入一个新数组中
for (let i = 0; i < arr.length; i++) { //循环传入的数组
var bu = false; //在循环里设定一个布尔值 让它等于false
for (let j = 0; j < there.length; j++) { //再循环新的数组(这时数组里只有传入数组的第一项)
if (arr[i] === there[j]) { //判断传入数组的每一项是否与新数组中有相同的
bu = true; //如果有相同的,布尔值就为 true
break; //然后终止循环
}
}
if (!bu) { //否则布尔为!true
there.push(arr[i]) //把传入数组中有的,新数组没有的push进新数组里面去
}
}
return there; //然后再把新的数组return出来
}
console.log(a(arr));
js去重第二种:
var arr = [1, 2, 5, 3, 6, 5, 1, 2, 8, 8, 9];
/* 方法二 ===================*/
/* 通过一个新数组做中间量,把传入数组的第一项放进新数组中,在通过后一项与前一项比较来实现去重 */
function a1(arr1) {
var arr2 = arr1.sort(); //先把传入的数组进行排序
var arr3 = [arr2[0]]; //然后把传入数组的第一项给了一个新数组arr3
for (let i = 0; i < arr2.length; i++) { //循环遍历传入的数组(因为数组第一项放入新数组中,我们从第二个开始遍历就行,)
if (arr2[i] !== arr3[arr3.length - 1]) { //然后判断传入的每一项和新数组的最后一项进行比较,如果不相等
arr3.push(arr[i]) //就将传入数组的那一个数push进新数组中
}
}
return arr3; //然后把新数组return出来
}
console.log(a1(arr));
对象去重:
var arr = [1, 2, 5, 3, 6, 5, 1, 2, 8, 8, 9];
/* 方法三========================== */
/* 同过对象的特性来去重,对象都有键,看是否那个键是否存在 */
function a3(arr4) {
var arr5 = []; //创建一个新数组
var obj = {}; //创建一个空对象
for (let i = 0; i < arr4.length; i++) { //遍历传入的数组
if (!obj[arr4[i]]) { //因为对象是以键值对来存储的,所以这来判断它的键,判断如果obj里面没有arr4[i]这个键
obj[arr4[i]] = 1; //用来判断对象里已存在这个键(true)
arr5.push(arr4[i]); //将不存在于obj的键push进去
}
}
return arr5; //然后将新数组return出来
}
console.log(a3(arr));
同过数组方法indexOf去重:
var arr = [1, 2, 5, 3, 6, 5, 1, 2, 8, 8, 9];
/* 方法4======================= */
/* 通过数组方法indexof来实现去重 */
function a4(arr6) {
var arr7 = []; //创建一个空数组
for (let i = 0; i < arr6.length; i++) { //遍历传入的数组
if (arr7.indexOf(arr6[i]) == -1) { //同过数组的方法indexof判断 -1代表未匹配到元素 如果有它就等于0
arr7.push(arr6[i]) //在arr7中未匹配到arr6中的元素,就把arr6中的元素push进arr7中
}
}
return arr7; //最后把新数组return出来
}
console.log(a4(arr));
关于ES6中提供的去重方法:
var arr = [1, 2, 5, 3, 6, 5, 1, 2, 8, 8, 9];
/* 方法5=========================== */
/* es6中set方法================ */
/* set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目。 */
/* Array.from(该方法可以将 Set 结构转为数组) */
function a5(arr8) {
//Set数据结构,它类似于数组,其成员的值都是唯一的
return Array.from(new Set(arr8)); // 利用Array.from将Set结构转换成数组
}
console.log(a5(arr));
jQ中去重方法①:
/* 方法六============ */
/* jq中去重============= */
/* $.inArray() 函数用于在数组中查找指定值,并返回它的索引值(如果没有找到,则返回-1)
可传入3个参数 第一是要查找的数 ,第二个是要查找的数组 ,第三个 可选。Number类型 指定从数组的指定索引位置开始查找,默认为 0
当等于-1表示数组中没有这个值 找到返回0
*/
$(function () {
var ago = [5, 8, 9, 3, 2, 4, 5, 3, 6, 2, 1]
function ah(ago) {
let arr9 = []; //创建一个空数组
for (let i = 0; i < ago.length; i++) { //遍历传入的数组
let ak = ago[i]; //用一个变量来接受传入的数组遍历出来的值
if ($.inArray(ak, arr9) == -1) { //判断新数组里面有没有传入数组里面的值 如果等于-1 表示没有
arr9.push(ak); //然后向新数组中push传入的函数值
}
}
return arr9; //然后将这个新数组return出来
}
console.log(ah(ago));
})
jQ中去重方法②:
/* 方法七====================== */
/* jq中去重============= */
/* $.unique只会移除相邻的重复节点,要想移除数组中的全部重复就要给他排序 */
$(function () {
let more = [5, 8, 6, 2, 5, 5, 6, 2, 1, 1, 1, 1];
$.unique(more.sort());
console.log(more);
})
我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习。 —— 列宁