防止数组添加重复元素

时间:2020-08-17 11:15:58

标签: javascript node.js arrays

我有这段代码:

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']

我该怎么做?

4 个答案:

答案 0 :(得分:4)

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

if (!letters.includes(letter1)) letters.push(letter1)

如果要从数组中删除重复项,可以将其转换为Set并再次返回:

[...new Set(letters)]

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

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

如果您不希望重复,我不确定为什么将letter1'B')推入数组。

答案 1 :(得分:1)

在插入之前检查数组是否具有元素。

Array.proptotype.includes()将有所帮助

if(!extingArray.includes(element)) {
    existingArray.push(element)
}

答案 2 :(得分:0)

function removeDuplicate(payload) {
    const result = [];

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

    return value
}

答案 3 :(得分:0)

使用letters.pop()删除可能输入到数组末尾的所有重复项。