Ich muss herausfinden, ob das Array unterschiedliche Werte enthält. Wenn es vorhanden ist, führen Sie die Funktion x aus. Wenn es nicht vorhanden ist, führen Sie die Funktion y aus. Wenn Sie jedoch eine for-Schleife verwenden und zuerst auf dasselbe stoßen, wird y ausgeführt, und x wird erst ausgeführt, wenn Sie auf eine andere stößt. Wie lässt sich die entsprechende Funktion ausführen, nachdem sie alle durchlaufen hat?
使用 Array.prototype.every() 或者 Array.prototype.some()
1.使用 ES5 array.every 方法,它对每个数组元素执行函数,当所有函数执行结果都是true,则最终结果是 true.否则会提前结束并得到false.
2.使用for循环,你需要一个变量,来保存数组的第一个的元素值,然后开始循环,当发现数组中有元素不等于你的变量时,你就能确定该执行X了(此时就可以break掉);否则,就是数组中没有不同值,执行Y
其实方法 1 也需要这个变量.
3.使用ES5 array.reduce 方法,它一次接受两个数组元素,你直接比较两个元素是不是相等就可以了.只要出现不相等,就是Y.
但这个方法不能break
for之前加个变量,for里遇到就改下,for后再if
用for循环的话,需要在for外面定义一个变量作为标志位:
如果支持ES6的话,可以用Set给数组去重,然后判断两个数组长度:
这个“存在不一样的值”描述的有点模糊,我的理解是数组里存在一个值跟其它值不一样。