JavaScript数组推送检查重叠警报

时间:2018-12-14 16:01:08

标签: javascript

我有一个名为sbjCodeArr

的数组
let sbjCodeArr = new Array();

每当我单击该按钮时,数据就会推送到sbjCodeArr

Ex)

  1. 我第一次单击按钮['a']
  2. 第二次点击按钮['a', 'b']
  3. 第三次单击按钮['a', 'b', 'c']

但是,如果当我尝试推送已存在的元素(如“ a”)时,那么我想防止再次推送“ a”并发出警告消息。

我尝试使用此代码,但无法正常工作。 td.eq(0).text()是一个变量,每当我单击该按钮时,它都会被挂住,并且应该检查该值是否在数组(sbjCodeArr)中重复。

let results=[];
for (var i = 0; i < sbjCodeArr.length; i++) {
    if (sbjCodeArr[i + 1] == sbjCodeArr[i]) {
        results.push(td.eq(0).text());
    }
    alert('repeated');
}
console.log(results);

我该怎么做?

2 个答案:

答案 0 :(得分:2)

如果要防止添加内容,可以检查数组中是否已存在内容,可以执行以下if语句:

if (!sbjCodeArr.includes(value)) {
  sbjCodeArr.push(value);
}

答案 1 :(得分:1)

我使用了indexOf,发现它更易于使用,它在数组中查找元素,如果该元素存在,则返回其索引号(从0开始),如果不存在,则返回存在则返回-1。我想知道元素是否存在,请问搜索结果是否为-1,是否在数组中写入,否则就不写入。

请参见以下示例:

class Zero {
    insert(val) {
        return new Node(val)
    }
    remove(val) {
        return null
    }
}

let zero = () => new Zero()

class Node {
    constructor(val) {
        this.val = val
        this.L = zero()
        this.R = zero()
    }
    insert(val) {
        if(val < this.val) this.L = this.L.insert(val)
        if(val > this.val) this.R = this.R.insert(val)
        return this
    }
    remove(val) {
        if(val === this.val)
            return zero()

        if(val < this.val) this.L = this.L.remove(val)
        if(val > this.val) this.R = this.R.remove(val)
        return this
    }
}

//

tree = new Node(5)
tree.insert(2)
tree.insert(6)
tree.insert(3)
tree.insert(8)
tree.insert(4)
tree.insert(7)


document.write('<xmp>' + JSON.stringify(tree, 0, 4) + '</xmp>')

tree.remove(4)

document.write('<xmp>' + JSON.stringify(tree, 0, 4) + '</xmp>')

tree.remove(8)

document.write('<xmp>' + JSON.stringify(tree, 0, 4) + '</xmp>')

我希望这会有所帮助!


编辑: 如果您使用的是当前浏览器,则可以使用includes方法,因为它来自ES 7,非常新,要在较旧的地方工作,最好使用indexOf。