我的问题是我想插入在推送时不重复的值
这是我的代码:
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
}
},
向我的对象添加新元素时,它返回以下内容。
当我再次按下添加按钮时,它会再次添加相同的值,我想执行验证以使数据不相同。我怎样才能以正确的方式执行此验证?
最佳答案
在插入之前验证该项目是否已存在于数组中。
您可以使用 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)
}
}
}
}
关于javascript - 验证数组中的重复数据条目 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66649409/