我有一个名为sbjCodeArr
let sbjCodeArr = new Array();
每当我单击该按钮时,数据就会推送到sbjCodeArr
Ex)
['a']
['a', 'b']
['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);
我该怎么做?
答案 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。