js数组对象去重问题

发布于 2022-09-11 21:09:08 字数 347 浏览 22 评论 0

存入数组对象时判断一下是否存在,我这样写为什么不行,我哪里写错了,能指点一下吗,谢谢

    ADD_ROUTE: (state, action) => {
        console.log(state.localSelectArr);
        if (state.localSelectArr.indexOf(action) == -1) {
            state.localSelectArr.push(action);
        } else {
            console.log('已存在');
            return;
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

倾城月光淡如水﹏ 2022-09-18 21:09:08

action是什么类型的数据

仅此而已 2022-09-18 21:09:08
// 试试这样可以吗
ADD_ROUTE: (state, action) => {
    let data = JSON.parse(JSON.stringify(state))
    if (state.localSelectArr.indexOf(action) == -1) {
        data.localSelectArr.push(action);
        state = data;
    } else {
        console.log('已存在');
        return;
    }
}
昔日梦未散 2022-09-18 21:09:08

clipboard.png

indexOf只能检测基础类型的,如果数组中有存储object或者function等,使用indexOf检测时,两者是不相等的

调妓 2022-09-18 21:09:08

当然不行啊 一个对象不会等于另一个对象的,除非它是另一个对象的浅拷贝,否则即使你的对象内容一样,它的指针也不会一样,因此它两永远不会相等的

流星番茄 2022-09-18 21:09:08

本来想插入时判断,是否存在,现在退而求其次,插入后去重

    export function deteleObject(obj) {
        var uniques = [];
        var stringify = {};
        for (var i = 0; i < obj.length; i++) {
            var keys = Object.keys(obj[i]);
            keys.sort(function (a, b) {
                return (Number(a) - Number(b));
            });
            var str = '';
            for (var j = 0; j < keys.length; j++) {
                str += JSON.stringify(keys[j]);
                str += JSON.stringify(obj[i][keys[j]]);
            }
            if (!stringify.hasOwnProperty(str)) {
                uniques.push(obj[i]);
                stringify[str] = true;
            }
        }
        uniques = uniques;
        return uniques;
    }
太阳男子 2022-09-18 21:09:08

这样写试试:

ADD_ROUTE: (state, action) => {
    if (state.localSelectArr.indexOf(action) == -1) {
        state.localSelectArr.push(action);
    }
    return state;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文