改进在数组中找到第一个唯一值的算法

阿尤布

数组示例:[ "Apple", "computer", "Apple", "Bag" ]
我必须创建一个获取第一个唯一值的函数,在这种情况下,**computer**
这是我的工作解决方案:

function firstUniqueProduct(products) {
    for (var index = 0; index < products.length; index++) {
        var product = products[index];
        var isUnique = true;
        for (var index2 = 0; index2 < products.length; index2++) {
            var product2 = products[index2];
            if (product === product2 && index !== index2) {
                isUnique = false;
                break;
            }
        }
        if (isUnique) return product;
    }
    return null;
}

console.log(firstUniqueProduct([ "Apple", "computer", "Apple", "Bag" ]));

一个拥抱数组需要花费很多时间,任何人都可以为我提供更好的算法。

一定的表现

您可以创建两个Set:一组用于到目前为止已发现的元素,而另一组用于到目前为止已发现两次或更多的元素。迭代时,如果尚不存在,请将其放在第一组中。否则,将其从第一个中删除,然后放入第二个中。最后,取第一个集合中的第一个值(如果集合中没有元素,则为null)

function firstUniqueProduct(products) {
    const foundOnce = new Set();
    const foundTwice = new Set();
    for (const elm of products) {
        if (foundTwice.has(elm)) continue;
        if (foundOnce.has(elm)) {
            foundOnce.delete(elm);
            foundTwice.add(elm);
        } else {
            foundOnce.add(elm);
        }
    }
    return foundOnce.size ? [...foundOnce][0] : null;
}

console.log(firstUniqueProduct([ "Apple", "computer", "Apple", "Bag" ]));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

二进制搜索无法在数组列表中找到第一个值

我需要在数组中找到第一个事件?

查找在数组中找到的第一个重复元素的索引

在数组中找到第一个错误的递归函数

如何在NumPy数组中找到第一个局部最大值?

如何在数组中搜索多个键并返回第一个找到的值?

如何在数组中找到一个值?

JavaScript在数组中找到小于等于给定数字的第一个数字

numpy:在2D数组的每一行中找到值的第一个索引

在数字序列中找到第一个间隙的索引

如何在多个数组中找到最大值并返回java中第一个索引的值?

在列表中找到所有后续值加一的第一个元素

PHP在两个多维数组中找到第一个区别

在foreach中找到第一个项目?

在Python中找到单词的第一个元音

在序列中找到第一个

在字符数组及其索引中找到第一个不同的字符

如何在对象中找到作为数组的第一个属性?

在Swift数组中找到第一个元素匹配条件(例如EKSource)

如何在JavaScript中找到匹配布尔条件的数组的第一个元素?

在int数组中找到第一个重复项,java

在具有最小索引的数组中找到第一个重复元素

如何在 PL/SQL 中找到数组的第一个最大元素

数组的第一个值

打印随机二维数组后,我需要在第一行中找到第一个最小值和第一个最大值?

如何从多个条件中找到与第一个条件相匹配的值

如何在表格中找到第一个文本框的值?

在对象列表中找到第一个匹配的字符串值

如何使用 jQuery 获取在 data-* 中找到的特定值的第一个实例