获取数组中对象的属性

时间:2018-06-19 09:53:44

标签: javascript arrays object vue.js

我使用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)不正确。如何访问该对象的属性?

1 个答案:

答案 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);