Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Arrays.filter未被识别为函数_Javascript_Arrays_Node.js - Fatal编程技术网

Javascript Arrays.filter未被识别为函数

Javascript Arrays.filter未被识别为函数,javascript,arrays,node.js,Javascript,Arrays,Node.js,因此,在下面的代码中,我试图过滤掉处于未完成状态的任务,但由于某种原因,终端会显示tasks。filter不是一个函数 const tasks = { tasks: [{ text: 'Grocery shopping', completed: true },{ text: 'Clean yard', completed: false }, { text: 'Film course',

因此,在下面的代码中,我试图过滤掉处于未完成状态的任务,但由于某种原因,终端会显示
tasks。filter
不是一个函数

const tasks = {
    tasks: [{
        text: 'Grocery shopping',
        completed: true
    },{
        text: 'Clean yard',
        completed: false
    }, {
        text: 'Film course',
        completed: false
    }],

    getTasksToDo: function(){
        const completedTasks = tasks.filter(function(){
            return this.tasks.completed === false
        })
    }
}

console.log(tasks.getTasksToDo())

您正在对您的
const tasks
常量引用的对象调用
filter
。相反,使用
this.tasks.filter
tasks.tasks.filter
引用该对象上的
tasks
属性。(JavaScript没有像Java或C#do那样的“隐式
this
”的概念。)

您的
过滤器
调用也不正确。你在检查吗

this.tasks.completed === false
…但该调用中的
将是
或全局对象。相反,接受参数并使用它:

const tasksToDo = this.tasks.filter(task => task.completed === false);
或者更习惯地说:

const tasksToDo = this.tasks.filter(task => !task.completed);
您还可以对其进行分解:

const tasksToDo = this.tasks.filter(({completed}) => !completed);

注意:我更改了常量的名称,因为这些是未完成的任务,而不是已完成的任务。

我修改了您的代码如下:

const tasks = { tasks: [{ text: 'Grocery shopping', completed: true },{ text: 'Clean yard', completed: false }, { text: 'Film course', completed: false }],

  getTasksToDo: function(){
    return this.tasks.filter(function(task){
        return task.completed === false
    });
  }
}

console.log(tasks.getTasksToDo())

过滤器函数回调以“task”作为参数,您需要对照它检查completed,因为这是this.tasks中的每个元素

任务
不是数组<代码>任务。任务是。只是你自己把对象变量命名为与objectTitle中的属性相同的对象变量应该是
对象。过滤器
不是一个函数。。。