javascript - 验证数组中的重复数据条目 - JavaScript

标签 javascript vue.js vuejs2

我的问题是我想插入在推送时不重复的值

这是我的代码:

addAddress: function() {
            this.insertAddresses.Adress = this.address_address
            this.insertAddresses.State = this.selectedStateAddress
            this.insertAddresses.City = this.selectedCityAddress
            if(this.insertAddresses.Adress !== "" && this.insertAddresses.State !== null && this.insertAddresses.City !== null) {
                let copia = Object.assign({}, this.insertAddresses);
                this.addresses.push(copia)
            }
            else
            {
                this.$message.error('Not enough data to add');
                return
            }
        },

向我的对象添加新元素时,它返回以下内容。

enter image description here

当我再次按下添加按钮时,它会再次添加相同的值,我想执行验证以使数据不相同。我怎样才能以正确的方式执行此验证?

enter image description here

最佳答案

在插入之前验证该项目是否已存在于数组中。

您可以使用 Array.prototype.find 搜索数组:

export default {
  methods: {
    addAddress() {
      const newItem = {
        Address: this.address_address,
        State: this.selectedStateAddress,
        City: this.selectedCityAddress
      }
      this.insertItem(newItem)
    },
    insertItem(item) {
      const existingItem = this.addresses.find(a => {
        return 
            a.State === item.State
         && a.City === item.City
         && a.Address === item.Address
      })

      if (!existingItem) {
        this.addresses.push(item)
      }
    }
  }
}

另一方面,如果您的应用需要更好的性能(例如,有很多地址),您可以保存一个单独的字典来跟踪该地址是否已存在:

export default {
  data() {
    return {
      seenAddresses: {}
    }
  },
  methods: {
    insertItem(item) {
      const { Address, State, City } = item
      const key = JSON.stringify({ Address, State, City })
      const seen = this.seenAddresses[key]

      if (!seen) {
        this.seenAddresses[key] = item
        this.addresses.push(item)
      }
    }
  }
}

demo

关于javascript - 验证数组中的重复数据条目 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66649409/

相关文章:

javascript - 未捕获的类型错误 : Undefined is not a function

javascript - 如何在本地保存羊驼json文件

javascript - 未捕获的类型错误 : Cannot read properties of null (reading 'style' )

javascript - Vue.js:使用 jQuery 触发选择更改后更新 v-model 值

typescript - [Vue 警告] : Failed to mount component: template or render function not defined. -vue-simple-uploader

javascript - 使用 Javascript 的多个 SOAP 请求

javascript - 如何动态使用 v-model 和 v-select

laravel - 将 vue-router 与 Laravel Vue 应用程序一起使用,如果我登录后转到基本 URL,它会显示 404

javascript - Vue - 调度完成后调用 store getter?

vue.js - 如何在vuejs中发布对象值