当前位置: 首页 > 知识库问答 >
问题:

防止数组添加重复元素

南门野
2023-03-14

我有这段代码:

var letters = ['A', 'B', 'C']
const letter1 = 'B'

for(var i=0; i<letters.length; i++) {
    var letter = letters[i]
    if (letter1 === letter) {
        console.log(letter)
        break
    } else {
        letters.push(letter1)
        break
    }
}

console.log(letters)

运行这段代码后,我得到了这样的结果:

['A', 'B', 'C', 'B']

但我想要这个结果:

['A', 'B', 'C']

我怎么能那么做?

共有3个答案

李谦
2023-03-14
function removeDuplicate(payload) {
    const result = [];

    payload.forEach(function(value) {
        if(result.indexOf(value) == -1) {
            result.push(value)
        }
    })

    return value
}
丁勇
2023-03-14

在插入之前检查array是否具有该元素。

Array.PropToType.Includes()将有助于

if(!extingArray.includes(element)) {
    existingArray.push(element)
}
潘畅
2023-03-14

最简单的解决方案是在推送之前检查值是否在数组中:

js prettyprint-override">if (!letters.includes(letter1)) letters.push(letter1)

如果要从数组中删除重复项,可以将其转换为,然后再转换回来:

[...new Set(letters)]

或者,您可以只使用而不使用数组,数组用于存储唯一值:

const letters = new Set(['A', 'B', 'C'])
// Use add instead of push (there is no push method on Set)
letters.add(letter1)

我不知道为什么要将letter1('B')推送到数组中,如果您不希望重复。

 类似资料:
  • 问题内容: 我有一个特定的类C的arraylist。 C类具有两个属性,即。 现在,当我将C类型的对象添加到ArrayList myList时,我想检查列表中是否已经存在对象,且其str1和str2的值与该对象的参数值(str1和str2)相匹配我要补充。 有什么有效的方法可以执行此操作,而不必每次都遍历完整列表并检查参数之间是否匹配? 问题答案: 您需要重写C类中的方法。 例如 然后,可以调用m

  • 问题内容: 我想创建一个表来存储设备设置。该表具有三行:id,parameter_name和parameter_value。 该表是通过执行以下查询语句创建的: 然后通过执行以下方法存储行: 创建数据库后,将存储默认值: 但是,方法insertRow()的问题在于它无法防止重复输入。 有谁知道在这种情况下如何防止重复输入? 问题答案: 您可以使用列约束。 UNIQUE约束导致在指定列上创建唯一索引

  • 所以我的目标是把一个字符串拆分成一个Word对象数组。我只想要一个对象来表示一个英语单词,这意味着在添加到数组之前应该过滤掉重复的单词。我一辈子都不知道为什么我过滤掉重复单词的标准失败了。我已经尝试了ArrayList和HashSet。我的目标是在字符串中计算该单词的实例,但我还没有实现。 我的单词分类是: 这是我当前的输出: 单词集大小:18 |单词列表大小:18 word: the | cou

  • 问题内容: 每次我通过贝宝付款时,我的信息都会在数据库中捕获,但我想防止重复。那么我该如何解决呢?还是应该检查电子邮件重复项? 编辑 据我所知,pinnaclecart将uid设置为primary。所以将它设置为唯一不是“危险”吗? 问题答案: 名字和姓氏都很好,但是除了唯一之外,其他一切都没有。我认识几个与我同名的人,因此我猜想在这两列上建立唯一索引只会令人沮丧,而无济于事。但是,使我与众不同的

  • 这是我在ionic应用程序中使用的代码,用于从FireBase中提取产品。 一个例子: 如果我有这样的项目列表: null 项目1 项目2 项目3 项目4 项目1 项目2 项目3 项目4 我不知道它为什么这样做,任何帮助将是非常感谢的。

  • 问题内容: 我不想拥有用户或位置,因为我可以有多行用户包含相同数据,或者有多行位置包含相同数据。我只想避免用户和位置都具有一定的价值,因为该行重复了许多次。 例如:这还可以 但这不行: 因为已经存在其中user = 1和location = 2的行。 如何避免重复? 问题答案: 声明对(用户,位置)的唯一约束。

  • 问题内容: 我想防止使用vb.net和MySQL作为数据库的清单表单中出现重复条目​​,这是我的代码: 结束子 我在搜索答案时发现了这个问题,但是当我尝试运行它时,它没有读取插入命令,而是即使没有相同的人员ID也会直接转到msbox“人员ID已经存在”。 有人可以检查为什么不阅读插入内容, 我的数据库表值: pcode =主键 lname =长文本 fname =长文本 办公室=长文本 名称=长文

  • 我使用Spring kafka 2. x读取来自kafka的消息。 我的问题是,如果我的方法在我的kafkalistener方法中花费了一段时间,那么kafka会发送相同的消息两次,这对我来说是个问题。我想要什么,如果我从Kafka读到消息,kafka不会向我发送这条消息第二次值,如 max.poll.interval.ms 不保证一次阅读消息。在Spring启动中实现一次阅读策略的正确方法是什么