[编程开发] JavaScript数组去重

[复制链接]
e中人 发表于 2023-11-4 04:55:38|来自:河北石家庄 | 显示全部楼层 |阅读模式

  • ES6提供的Set是一组唯一值的集合,每个值仅能出现一次;
let arr = [5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];

function unique(array) {
    return Array.from(new Set(array));
};

unique(arr); //[5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1]2. 使用filter方法 使用数组的filter方法可以创建一个新数组,该新数组只包含原数组中不重复的元素:
let arr = [5, 7, 8,"小白", 4, 1, 5, 2, 4,"小白", 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];
const uniqueArray = arr.filter((item, index, self) => {
    // 值为true时第一次出现,为值false时重复出现
    return self.indexOf(item) === index;
});
console.log(uniqueArray); //[5, 7, 8, '小白', 4, 1, 2, 3, 6, 9]3. 使用forEach方法 使用forEach方法遍历原数组,将不重复的元素添加到一个新数组中,
let arr = [5, 7, 8,"小白", 4, 1, 5, 2, 4,"小白", 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];
function unique(array) {
    let arr = [];
    array.forEach(item => {
        if (!arr.includes(item)) {
            // 判断条件可用  arr.indexOf(item) == -1  代替
            arr.push(item)
        };
    })
    return arr;
}
unique(arr); //[5, 7, 8, '小白', 4, 1, 2, 3, 6, 9]
4. 用两个for循环嵌套,搭配splice方法删除重复的值
let arr = [5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];

function unique(array) {
    for (let i = 0; i < array.length; i++) {
        for (let j = i + 1; j < array.length; j++) {
            if (array == array[j]) {
                array.splice(j, 1);
                j--;
            }
        }
    }
    return array;
}

unique(arr); //[5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1]
全部回复0 显示全部楼层
暂无回复,精彩从你开始!

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则