javascript - 过滤唯一 ID 时遇到问题

标签 javascript jquery

设置:leftItemsrightItems 是 5 位 ID 的数组。 matchedItems 是所有这些 ID 的数组 - 有很多结果具有相同的 ID。 $matches 是一个 div,仅当具有该 ID 的结果尚未添加到列表中时,我才想将结果附加到该 div。

问题:我不断在 $matches 中获取具有相同 ID 的 div!但是,我知道我的过滤器做了一些事情,因为如果我将 .toString 添加到存在检查中,如下所示:matchedItems.indexOf(litem.toString()),我会得到更多结果。我的支票 将其减少到 2 或 3 个具有相同 ID 的结果,但不像我想要的那样只有 1 个。

leftItems.forEach(function (litem) {
    rightItems.forEach(function (ritem) {
        if (litem === ritem) {
            var itemDiv = $('.results.left a[provider-id="' + litem + '"]');
            var miniMe = itemDiv.clone();

            if ( matchedItems.indexOf(litem) === -1 ){
                $matches.append(miniMe);
                matchedItems.push(litem);
            } else { 
                console.log('element exists with id: ' + litem);
            }

        }
    });
});

最佳答案

如果您试图在两个或多个数组中查找相同的值,已经有库可以为您执行此操作。例如:https://lodash.com/docs#intersection

_.intersection([1, 2], [4, 2], [2, 1]); //→ [2]

根据这个结果,您可以在前端重新绘制您需要的任何内容。

说实话,我的例子有点令人困惑,虽然我可以想出很多解决你的问题的解决方案,但我不确定我是否真的理解你的用例

编辑:根据您的评论,您应该遵循 Michaels 的建议,首先在两个数组上使用 concat,然后使用第 3 方 unique() 函数(在他和我的情况下,我们都使用 lodash,这很棒)

关于javascript - 过滤唯一 ID 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299712/

相关文章:

javascript - Nodejs 顺序 url 请求的最佳实践

javascript - CSS 背景图像之间的过渡

Jquery Ajax 仅在 Debug模式下工作

jquery - 悬停时显示随机元素,Jquery

jquery - 使用多个嵌套或条件的where(或AND)?

javascript - 将 UTM 值从 URL 推送到隐藏字段的脚本 (Webflow)

javascript - 尝试使用 cors 获取请求的资源上不存在 'Access-Control-Allow-Origin' header 来访问 google contacts api

javascript - 嵌入 moment.js 时出错

javascript - 无法更新数据对象中的值,我在 vue.js 中传递给 dom

jquery - 悬停标记和弹出窗口时显示 map 标记的弹出窗口,悬停时隐藏弹出窗口