首页 > 解决方案 > 未捕获的类型错误:arr.filter 不是函数

问题描述

我在控制台中打印了arr值,它们就像

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

但是当这个函数给出错误时,我没有在arr中得到任何值

未捕获的类型错误:arr.filter 不是函数

我是 java-script 的新手,我不知道这个错误是什么

function filter(arr, criteria) {
   return arr.filter(function (obj) {
        return Object.keys(criteria).every(function (c) {
            return obj[c] == criteria[c];
        });
    });
}

标签: javascriptjquery

解决方案


似乎您发送给过滤器函数的 arr 不是数组,这就是错误说 arr.filter 不是函数的原因。

刚刚尝试过,它可以工作,所以你的功能似乎没问题:

function filter(arr, criteria) {
   return arr.filter(function (obj) {
        return Object.keys(criteria).every(function (c) {
            return obj[c] == criteria[c];
        });
    });
}

const arr = [
  {
    name: "David",
    age: 54
  },
  {
    name: "Andrew",
    age: 32
  },
  {
    name: "Mike",
    age: 54 
  }
];
const myFilter = {"age": 54};
const result = filter(arr, myFilter);

console.log(result);

推荐阅读