运用splice进行数组去重

思路:
// 思路:双层循环:外层控制每次遍历时需要比较的数组对象,
    //                 内层单次遍历找出重复元素,并执行splice删除操作
var arr = [1, 2, 3, 2, 1, 3, 4, 2, 5];

        for (var i = 0; i < arr.length; i++) {
            //首先,j不能=0,则每次循环必会有i = j,导致删除一个元素,删除的是哪一个,无需考虑,因为逻辑错误
            //其次,j不能=i,则每次循环第i个元素会被删除,逻辑错误
            //所以按照逻辑来说,内层控制遍历起始位置,
                //假如i=3,程序已经循环了好几遍了,当这时,i=0,1,2这三个对应的数组元素是不是就可以不用在内层遍历了?
                //因为人家对应的arr[1]在第二遍循环的时候,已经和数组中的所有元素都进行了比较,没有相同的,多以,
                //在后来的比较重,就不用再去让其比较,
                //  所以无疑,让 j = i + 1 作为起始位置是最好的选择
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[i] == arr[j]) {
                    arr.splice(j, 1);
                    j--;
                    //根据splice()方法的特性,其操作会影响原来的数组,所以执行删除操作后
                    //后面的数组元素,会前进一位,所以如果想要继续顺序无差别比较,
                    //就j--,让检索位置后移,下一次循环时重新检索这个位置的元素
                    //所以注意j--的位置是在if的代码块里,不能写在外面

                }
            }
        }
        //JSON是一种轻量级的数据交换方式(这种解释*格高,但不容易理解)
        //若你不知道这是个什么东西,你就暂时理解为,可以将数组进行字符串转换,可视化输出
        //后续学习中会学到JSON
        console.log(JSON.stringify(arr));
程序看似简单,其实中间有这么两个重点问题需要解决:
1.j 的取值问题

//首先,j不能=0,则每次循环必会有i = j,导致删除一个元素,删除的是哪一个,无需考虑,因为逻辑错误
//其次,j不能=i,则每次循环第i个元素会被删除,逻辑错误
//所以按照逻辑来说,内层控制遍历起始位置,
//假如i=3,程序已经循环了好几遍了,当这时,i=0,1,2这三个对应的数组元素是不是就可以不用在内层遍历了?
//因为人家对应的arr[1]在第二遍循环的时候,已经和数组中的所有元素都进行了比较,没有相同的,多以,
//在后来的比较重,就不用再去让其比较,
// 所以无疑,让 j = i + 1 作为起始位置是最好的选择

2 j - - 的作用

//根据splice()方法的特性,其操作会影响原来的数组,所以执行删除操作后
//后面的数组元素,会前进一位,所以如果想要继续顺序无差别比较,
//就j–,让检索位置后移,下一次循环时重新检索这个位置的元素
//所以注意j–的位置是在if的代码块里,不能写在外面

注:

JSON是一种轻量级的数据交换方式(这种解释*格高,但不容易理解) 若你不知道这是个什么东西,你就暂时理解为,可以将数组进行字符串转换,可视化输出 后续学习中会学到JSON

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这里是学前端的练小白的每日点滴
如书写有误,请大佬不吝赐教,万分感谢
持续更新中