Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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-reduce示例的解释_Javascript_Arrays_Reactjs_Redux_Immutability - Fatal编程技术网

JavaScript-reduce示例的解释

JavaScript-reduce示例的解释,javascript,arrays,reactjs,redux,immutability,Javascript,Arrays,Reactjs,Redux,Immutability,这是我关于StackOverflow的第一个问题,如果我做错了什么-对不起 在老师的帮助下,我有一个减速机函数,我能真正理解它的意思。 这是一个我有按钮的待办事项应用程序。按下按钮时,todo列表中的所有项目都应标记为已完成。当我再次按下按钮时,所有项目都应处于完成状态 我得到了大部分代码。有一部分我无法用图形表示我的想法,那就是项目数组前的解释标记!store.items.find。 如果有人能给我一个解释,我将不胜感激! 如果您需要我共享更多代码,也请告诉我 completeAllTodo:

这是我关于StackOverflow的第一个问题,如果我做错了什么-对不起

在老师的帮助下,我有一个减速机函数,我能真正理解它的意思。 这是一个我有按钮的待办事项应用程序。按下按钮时,todo列表中的所有项目都应标记为已完成。当我再次按下按钮时,所有项目都应处于完成状态

我得到了大部分代码。有一部分我无法用图形表示我的想法,那就是项目数组前的解释标记!store.items.find。 如果有人能给我一个解释,我将不胜感激! 如果您需要我共享更多代码,也请告诉我

completeAllTodo: (store, action) => {
    const areAllTasksCompleted = !store.items.find(todo => !todo.isComplete)
    if (areAllTasksCompleted) {
        const completedItems = store.items.map(todo => {
            return {
                ...todo,
                isComplete: false
            }
        })
        store.items = completedItems
    } else {
        const completedItems = store.items.map(todo => {
            return {
                ...todo,
                isComplete: true
            }
        })
        store.items = completedItems
    }
},
Arrayfind将返回匹配项的数组(如果有),否则将返回未定义项。 因此,如果有一些不完整的TODO find将返回一个数组,对该数组求反将导致false,如果没有不完整的TODO,它将返回undefined,对undefined求反将导致true

考虑下面的代码片段:

常数todo=[ {task:Exercise,isComplete:true}, {任务:购买杂货,isComplete:false}, ]; //上述todo数组中有一个不完整的todo const resultFromFind=todo.findt=>!t、 不完全; console.logresultFromFind;//{任务:“购买杂货”,isComplete:false} 常数全部完成=!结果发现 console.logallComplete//falseArrayfind将返回匹配项的数组,否则将返回未定义项。 因此,如果有一些不完整的TODO find将返回一个数组,对该数组求反将导致false,如果没有不完整的TODO,它将返回undefined,对undefined求反将导致true

考虑下面的代码片段:

常数todo=[ {task:Exercise,isComplete:true}, {任务:购买杂货,isComplete:false}, ]; //上述todo数组中有一个不完整的todo const resultFromFind=todo.findt=>!t、 不完全; console.logresultFromFind;//{任务:“购买杂货”,isComplete:false} 常数全部完成=!结果发现 console.logallComplete//falsewell

意味着查找任何尚未完成的项目,如果没有此类项目,则find将返回undefined,依此类推

!store.items.find(todo => !todo.isComplete) 
意味着如果有一个项目未完成,则该项为false。如果所有项目都已完成,则find将返回undefined,且整个表达式为true

表达相同逻辑的更好方法是

const areAllTasksCompleted = store.items.every(todo => todo.isComplete)

意味着查找任何尚未完成的项目,如果没有此类项目,则find将返回undefined,依此类推

!store.items.find(todo => !todo.isComplete) 
意味着如果有一个项目未完成,则该项为false。如果所有项目都已完成,则find将返回undefined,且整个表达式为true

表达相同逻辑的更好方法是

const areAllTasksCompleted = store.items.every(todo => todo.isComplete)

返回与谓词回调条件匹配的第一个项

todo=>!todo.isComplete是谓词回调,它在迭代中向当前项传递一个参数,如果项不完整,则返回true;如果项完整,则返回false

因此,此表达式将返回数组中未完成的第一个元素的值

这个!在整个表达式否定表达式的结果之前。在JavaScript中,任何对象值都将强制为true,null或未定义的值将强制为false,因此如果表达式找到与谓词匹配的值,则const将被指定为false,否则将为true

返回与谓词回调条件匹配的第一个项

todo=>!todo.isComplete是谓词回调,它在迭代中向当前项传递一个参数,如果项不完整,则返回true;如果项完整,则返回false

因此,此表达式将返回数组中未完成的第一个元素的值

这个!在整个表达式否定表达式的结果之前。在JavaScript中,任何对象值都将强制为true,null或未定义的值将强制为false,因此如果表达式找到与谓词匹配的值,则const将被指定为false,否则将为true。

它强制转换!有些val是布尔值,所以如果find返回一个falsy值,结果将是false,它有两个!运算符并将对象转换为布尔值。这是非常令人困惑的。像这样使用:store.items.everytodo=>todo.isCompleteT强制转换!有些val是布尔值,所以如果find返回一个falsy值,结果将是false,它有两个!运算符并将对象转换为布尔值。这是非常令人困惑的。像这样使用:store.items.everytodo=>todo.isComplete