Javascript 过滤器不';我不能在Vue.js中工作。我怎样才能修好它?

Javascript 过滤器不';我不能在Vue.js中工作。我怎样才能修好它?,javascript,vue.js,Javascript,Vue.js,我正在尝试使用Vue.js中的数据筛选我的阵列。我在计算属性中做这件事。这是测试阵列: { "Animals": [ { "date_time": "2011.08.31", "animal_list": [ { "animal_title": "Monkey" }, {

我正在尝试使用Vue.js中的数据筛选我的阵列。我在计算属性中做这件事。这是测试阵列:

{
    "Animals": [
        {
            "date_time": "2011.08.31",
            "animal_list": [
                {
                    "animal_title": "Monkey"
                },
                {
                    "animal_title": "Giraffe"
                }
            ]
        },
        {
            "date_time": "2012.08.31",
            "animal_list": [
                {
                    "animal_title": "Raccoon"
                },
                {
                    "animal_title": "Giraffe"
                }
            ]
        }
    ]
}
这是我的过滤功能:

filteredData.filter(项=>
物品。动物清单。一些(
元素=>
动物元素名称
.toLowerCase()
.indexOf(this.animalTitle.toLowerCase())!=-1
)
);
看起来不错,但不起作用。当我在表单中输入“Raccoon”时,它必须只返回第二个对象,但返回所有对象

为什么会这样?我做错了什么


UPD:filteredData是一个数组
Filteredata=animalData.Animals

试图重现您的问题,但在我的小提琴中,它按预期工作:

const data = {
    "Animals": [
        {
            "date_time": "2011.08.31",
            "animal_list": [
                {
                    "animal_title": "Monkey"
                },
                {
                    "animal_title": "Giraffe"
                }
            ]
        },
        {
            "date_time": "2012.08.31",
            "animal_list": [
                {
                    "animal_title": "Raccoon"
                },
                {
                    "animal_title": "Giraffe"
                }
            ]
        }
    ]
};

const filtering = () => {
  const filteredData = data.Animals;
  const animalTitle = "Giraffe";

    return filteredData.filter(
        item => item.animal_list.some(
        elem => elem.animal_title.toLowerCase().indexOf(animalTitle.toLowerCase()) !== -1)
    );
}

const result = filtering();
console.log(result);

**更新**
将Fiddle更改为Vue JS组件以说明解决方案。

我猜
这个。运行筛选器时,animalTitle
是一个空字符串。放置一个断点,然后查看。检查
this.animalTitle
@Jonathan的值,不,我在控制台中观看了。第一个对象为“false”,第二个对象为“true”。但它不会过滤。您应该始终使用三重等于,而不是!=,例如!==。在JavaScript中使用triple equals===时,我们正在测试严格的相等性。这意味着我们要比较的类型和值必须相同。@KennyDope在本期之前,这对我来说从来都不是问题。但是好的,我改变了它…什么都没发生(我明白了…但我不明白,我的项目出了什么问题。好的,无论如何,谢谢你的帮助)控制台中有错误吗?(请批准解决方案)不,我没有任何错误。这对我来说就是不起作用。我将搜索一个问题。谢谢你的帮助)批准了你的解决方案。