检查观察者是否包含某个元素。

3

要检查数组是否包含undefined,我可以这样做:[undefined].indexOf(undefined)或者这样做:[undefined].some(el => el === undefined)。但在我的Vue.js应用程序中,我得到了-1false。我尝试打印我的数据,我得到了[__ob__: Observer]。如何检查Observer是否包含undefined?

var app = new Vue({
  el: '#app',
  data: [undefined]
  },
  methods: {
    someFunction() {
      console.log(this.data.some(el => el === undefined), this.data.indexOf(undefined));
    }
  }
}) 
1个回答

2

Vue.js希望data是一个对象,而不是一个数组。

var app = new Vue({
  el: '#app',
  data: {
     prop: [undefined]
  },
  methods: {
    someFunction() {
      console.log(this.prop.some(el => el === undefined), this.prop.indexOf(undefined));
    }
  }
});

谢谢,但是如何解决这个问题,因为 prop[__ob__: Observer],而 console.log(this.prop.some(el => el === undefined), this.prop.indexOf(undefined));false, -1 - rel1x
每个属性都有观察者,这就是VueJS跟踪更改并实现响应式的方式 - 这是正常的。 - Belmin Bedak
@BelminBedak 好的,但是如果this.prop[undefined],为什么console.log(this.prop.some(el => el === undefined), this.prop.indexOf(undefined));输出的是false, -1 - rel1x
1
不,它不会打印出那个,它会打印出 true 0 - http://jsbin.com/joxedugeqi/edit?html,js,output - Belmin Bedak
@BelminBedak 真的!对不起,我现在更接近解决我的问题了,因为我使用了 data: {arr: new Array(n)},而且我以为我有一个由 nundefined 组成的数组。 - rel1x
@rel1x [不是的,因为“这意味着一个长度为arrayLength的空槽数组,而不是具有实际未定义值的槽位”](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray)。 - str

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接