JS强力去重,包括NaN和Object

news/2024/7/19 15:43:08 标签: JavaScript, js, 数组, 强力, 去重

 JavaScript数组强力去重数组中的内容可为任意值,包括NaN和Object

function distinct(arr) {
    let NaNFlag = false;
    let objStrArr = [];
    return arr.filter((item, index)=> {
        // 判断NaN
        if (item !== item) {
            if (NaNFlag) {
                return false
            } else {
                NaNFlag = true;
                return true
            }
        }
        // 判断Object
        if (typeof item === 'object') {
            let str = JSON.stringify(item);
            if (objStrArr.indexOf(str) !== -1) {
                return false;
            } else {
                objStrArr.push(str);
                return true;
            }
        }
        // 其他
        let n = arr.indexOf(item);
        return n === index
    })
}

var arr = ['a', 'a', 'b', {}, {}, {a: 'b'}, {a: 'c'}, {a: 'b'}, NaN, NaN, true, false, true, 1, 2, 1];

console.log(distinct(arr))

运行后结果如下:


http://www.niftyadmin.cn/n/1727484.html

相关文章

smbclient 报错:protocol negotiation failed: NT_STATUS_CONNECTION_RESET

smbclient访问Windows共享文件夹报错误:protocol negotiation failed: NT_STATUS_CONNECTION_RESET 解决办法: 打开/etc/samba/smb.conf文件,在global标签下增加如下两个参数项: client min protocol CORE client max protocol…

Qt5.9.9 程序启动报错:libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format

今天使用Qt5.9.9编译程序,成功,但是运行时报错:libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format 解决办法:安装freetype和freetype-devel sudo yum install freetype freetype-devel 再次运行即可成功。 在此温馨提…

Linux系统下,快速打包程序依赖系统库(so)文件

将程序依赖的所有库文件拷贝出来 ldd helloworld | awk {print $3} | xargs -i cp -L {} /home/zz/lib helloworld是可执行程序名称,/home/zz/lib是拷贝依赖库的目标文件夹 如果需要有选择的拷贝,则可以加入grep过滤一下 ldd helloworld | grep -E &…

Linux alias 设置别名

Linux环境中可以通过设置别名,来快速执行对应了命令。 如果只是让其在当前用户下生效,则将如下内容写入 ~/.bashrc 文件中,如果需要让所有让其在所有用户中生效,则可将如下内容写入 /etc/profile 文件,或 /etc/profil…

Unmet dependency: xscrnsaver

安装libxss-dev(或libxss-devel)即可 sudo yum install libxss-dev 或 sudo apt install libxss-dev

yum install 只下载,不安装

使用 yum install 只下载安装程序以及依赖程序,而不直接安装,命令如下: yum install --downloadonly --downloaddir/download python-devel# --downloadonly 表示只下载,不安装 # --downloaddir 表示程序的下载路径 可以使用 yu…

源码编译、安装gcc 7

下载gcc源码 wget https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz 开始编译 tar -xvf gcc-7.3.0.tar.gz cd gcc-7.3.0 ./configure --prefix/usr/local/gcc-7.3.0 make sudo make install 如果报错:configure: error: Building GCC requires GMP 4.2,…

python调用md5报错:“cannot import name md5”

报该错误的原因是,缺少_md5.so文件,可以下载hashlib的源码,编译安装即可: 步骤如下: wget https://pypi.tuna.tsinghua.edu.cn/packages/74/bb/9003d081345e9f0451884146e9ea2cff6e4cc4deac9ffd4a9ee98b318a49/hashl…