【问题标题】:JavaScript array push check overlap alertJavaScript 数组推送检查重叠警报
【发布时间】:2018-12-14 16:01:07
【问题描述】:

我有一个名为sbjCodeArr的数组

let sbjCodeArr = new Array();

而且每次点击按钮,数据都会推送到sbjCodeArr

例如)

  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);

我该怎么做?

【问题讨论】:

标签: javascript


【解决方案1】:

如果你想防止内容被添加,你可以检查它是否已经存在于数组中,你可以做一个 if 语句,比如:

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

【讨论】:

    【解决方案2】:

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

    请看下面的例子:

    //test presets
    var sbjCodeArr = new Array();
    sbjCodeArr = ["a", "b", "c"];
    
    //variable with the new value to be added in the array
    var newPush = prompt("Please put a new value", "d");
    
    //add if it is not in the array, and sends a warning if
    if(sbjCodeArr.indexOf(newPush)==-1){
    	//If the array does not have this element
    	sbjCodeArr.push(newPush);
    }else{
    	//If the array already has this element
    	alert("Array already has "+newPush)
    }
    
    //throws the value of the new array in the console for verification
    console.log(sbjCodeArr);

    我希望这会有所帮助!


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

    【讨论】:

    • 谢谢!我用这个解决方案解决了!实际上,我通常使用 chrome 浏览器并使用 nodejs,所以 indexOf 方法对我来说很好。我阅读了 include 方法,但仍然无法在 IE 中工作 :( 太伤心了。我希望大多数浏览器都应该支持早期的语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2017-08-04
    • 2011-10-10
    • 1970-01-01
    • 2016-02-16
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多