[英]Getting a property of an object within an array
我使用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)
不正確。如何訪問該對象的屬性?
array1
是一個數組,不是對象,因此無法訪問this.array1.element
。 只需將元素作為給forEach
的參數來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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.