我使用Vue.js并且有一个方法可以将一个数组中的值与另一个数组中的值进行比较。
array1: [{ name: 'test1', somevar: true }, { name: 'test2', somevar: false }]
array2: ['test1', 'test3']
compare() {
//I want to access an object property within an array1
this.array1.forEach((element) => {
if(this.array1.element.name.includes(this.array2[0])) {
// if it is true, I would like to remove that compared value from an array 1
if(this.array2[0] !== -1) {
var index = this.array1.element.name.indexOf(this.array2[0])
this.array1.splice(index, 1)
}
}
我认为这部分:this.array1.forEach((element)
不正确。如何访问该对象的属性?
答案 0 :(得分:2)
array1
是一个数组,而不是一个对象,因此访问this.array1.element
将不起作用。只需将元素作为forEach
赋予的参数即可。
此外,传递给forEach
的函数接受另一个参数:第二个参数表示当前元素的索引,因此不需要搜索indexOf
。
但是,比这些调整更好,在这种情况下使用filter
会更合适:
const obj = {
array1: [{ name: 'test1', somevar: true }, { name: 'test2', somevar: false }],
array2: ['test1', 'test3'],
compare() {
obj.array1 = obj.array1.filter(({ name }) => (
!obj.array2.includes(name)
))
}
}
obj.compare();
console.log(obj.array1);