js给数组里面添加不重复的元素?
var editableTabs = [{ title: '详情页',
name: '1',
content: 'Header',
closable: false
}]
要给这个数组里面添加一个obj
const obj = { title: '失陷数量',
name: '3',
content: CompromiseEvent,
closable: true
}
是一个点击事件 如何多次点击的时候数组里面只添加一次
created() { Bus.$on('flowChange', e => {
var arr = []
arr.push(e)
for (var i = 0; i < arr.length; i++) {
if (this.editableTabs.indexOf(arr[i].name) === -1) {
this.editableTabs.push(arr[i])
}
}
})
},
watch: {
editableTabs(newV) {
this.editableTabs = newV
console.log(this.editableTabs)
}
},
点击事件触发的时候,我打印出来的this.editableTabs数组里面的元素 obj有多个
这个是我写的代码 麻烦指正一下哪里出问题了
回答:
this.editableTabs.indexOf(arr[i].name) === -1
这个判断写的不对,会始终返回-1,建议改为 this.editableTabs.every(v => v.name !== arr[i].name)
回答:
this.editableTabs是数组,里面的元素是对象,arr[i].name是字符串,两个肯定匹配不上
回答:
if (this.editableTabs.indexOf(arr[i].name) === -1) { this.editableTabs.push(arr[i])
}
你的判断条件错了。因为 editableTabs
是一个对象数组,里面的元素都是对象啊,而去匹配的 arr[i].name
是字符串,肯定会返回 -1
啊。
可以修改成这样:
if (!this.editableTabs.some(item=>item.name===arr[i].name)) { this.editableTabs.push(arr[i])
}
相关阅读
Array.prototype.indexOf() - JavaScript | MDN
Array.prototype.some() - JavaScript | MDN
以上是 js给数组里面添加不重复的元素? 的全部内容, 来源链接: utcz.com/p/933007.html