js 判断数组中是否有重复值两种方法

判断数组中是否有重复的值,重复则提示优先级重复

4567

第一种方法 推荐

// 以数组值为键,持续向一个对象里面加值,
    // 如果在加值之前就发现这个属性在对象中已经存在,那么他就是重复的
function  isRepeat(arr) {
      var hash = {}
      for (var i in arr) {
        if (hash[arr[i]]) { return true }
        hash[arr[i]] = true
      }
      return false
    },

全部代码

<Input v-model.trim="item.haha" @on-blur="func1" clearable placeholder="请输入" :style="{ width: formInputWidth1 }"></Input>
// 以数组值为键,持续向一个对象里面加值,
// 如果在加值之前就发现这个属性在对象中已经存在,那么他就是重复的
isRepeat(arr) {
  var hash = {}
  for (var i in arr) {
    if (hash[arr[i]]) { return true }
    hash[arr[i]] = true
  }
  return false
},
func1() {
  let list = []
  this.form2.items.forEach(item => { // this.form2.items 是我的数据
    list.push(item.haha) // item.haha 是我要检查是否重复的数据
  })
  let temp = this.isRepeat(list) // 如果有重复则返回true,否则为false
  // let temp = this.arrHasvalue(list) 不推荐使用第二种方法,有问题
  if (temp) {
    this.$Message.error({ content: '优先级有重复的,请检查!', duration: 3 })
  }
  console.log(list, temp, '优先级', this.$cloneDeep(this.form2.items))
},

第二种方法 不推荐

function arrHasvalue(arr) {
      var nary = arr.sort()
      for (var i = 0; i < arr.length; i++) {
        if (nary[i] == nary[i + 1]) {
          console.log('数组重复内容:' + nary[i])
          return true
        } else {
          return false
        }
      }
    },

546