获取数组中对象的属性
Posted
技术标签:
【中文标题】获取数组中对象的属性【英文标题】:Getting a property of an object within an array 【发布时间】:2018-11-28 05:48:00 【问题描述】:我使用 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)
不正确。如何访问该对象的属性?
【问题讨论】:
if (element.name...)
不需要this.array1
【参考方案1】:
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);
【讨论】:
我认为将!element.name.includes(obj.array2[0])
更改为!obj.array2.includes(element.name)
会更有意义,因为他希望从array1
中删除名称出现在array2
中的项目。
谢谢!以及如何将元素引用为 forEach
函数中的参数?
例如this.array1.forEach((element, i) =>
那么当前被迭代的元素的索引是i
。 (不要尝试在迭代数组时对其进行变异)
我仍然无法访问数组内的对象属性name
。
我试过if(this.array1.element.name.includes(this.array2[0]))
而不是if(element[i].name.includes(this.array2[0]))
,但还是不行。以上是关于获取数组中对象的属性的主要内容,如果未能解决你的问题,请参考以下文章