如何检查数组是否具有相同的值?

时间:2017-04-02 07:30:39

标签: javascript javascript-events onclick

const style1=['50%','3.5vw','3.5vw','2.5vw','2.5vw']
const style2=['0%','22.5%','95%','2.5vw','2.5vw']

function addbuttonAnimation() {
    let applied = ( document.activeElement.id === 'add-order') ? [].concat(style2) : [].concat(style1)
    let x = document.querySelector('#add-order')

    function goStyle(...applied) {
        x.style.borderRadius = applied[0]
        x.style.width =applied[1]
        x.style.height =applied[2]
        x.style.bottom =applied[3]
        x.style.right =applied[4]
    }

    goStyle(...applied)
}

document.querySelector('#add-order').addEventListener("mouseup", addbuttonAnimation, false);
document.querySelector('main-wrap').addEventListener("mouseup", addbuttonAnimation, false);

我怎么知道我的"应用"数组值是否已更改(从以前的调用中是否具有相同的值)?所以每当" addbuttonAnimation()"如果"已应用"它被调用,它不必再次重新分配任何值。 array与之前的调用具有相同的值。

2 个答案:

答案 0 :(得分:1)

indexOf()方法在数组中搜索指定的项目并返回其位置。

搜索将从指定的位置开始,如果没有指定开始位置,则从头开始,并在数组的末尾结束搜索。

如果找不到该项,则返回-1。

如果项目多次出现,indexOf方法将返回第一次出现的位置。

注意:第一项的位置为0,第二项的位置为1,依此类推。

提示:如果要从头开始搜索,请使用lastIndexOf()方法

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");

a的结果将是:2

答案 1 :(得分:0)

您可以使用underscore.js#intersection来避免额外的写作痛苦

  let prevApplied = [];

 function addbuttonAnimation() {

   let applied = (document.activeElement.id === 'add-order') ? [].concat(style2) : [].concat(style1)
   var boolStyleDiff = _.intersection(prevApplied, applied);

   if (!boolStyleDiff) {

     return false; //to avoid call to goStyle()
   }

   prevApplied = applied; //saved previously applied
   let x = document.querySelector('#add-order')

   function goStyle(...applied) {
     //code
   }

   goStyle(...applied)
 }