Javascript 有人能帮我理解Leetcode的解决方案吗;s自我除数练习

Javascript 有人能帮我理解Leetcode的解决方案吗;s自我除数练习,javascript,Javascript,以下是该练习的链接: 我有代码,但在调用第一个map方法后,我很难理解如何解释它 .map((整数)=>integer!==0&&number%integer==0) 这将检查整数数组中的单个整数是否不是0(因为SDN不能包含0),以及该数字是否可以被整数整除。这个解释正确吗?如果我们在调用第二个map方法后返回它,数组会是什么样子 至于reduce方法,我完全不知道。为什么要用它 谢谢 var SDN = function(number) { // change number to

以下是该练习的链接:

我有代码,但在调用第一个map方法后,我很难理解如何解释它

.map((整数)=>integer!==0&&number%integer==0)
这将检查整数数组中的单个整数是否不是0(因为SDN不能包含0),以及该数字是否可以被整数整除。这个解释正确吗?如果我们在调用第二个map方法后返回它,数组会是什么样子

至于reduce方法,我完全不知道。为什么要用它

谢谢

var SDN = function(number) {

    // change number to string
    // use split to get number string to be an array of integers as strings
    // map(Number) to change array of strings to array of numbers

    return number.toString()
                .split('')
                .map(Number)
                .map((integer) => integer !== 0 && number % integer === 0)
                .reduce((a,b) => a && b)
}

var selfDividingNumbers = function(left, right) {
    let res = []
    for(let i = left; i <= right; i++) {
        if(SDN(i)) {
            res.push(i)
        }
    }
    return res
};
var SDN=函数(编号){
//将数字更改为字符串
//使用split将数字字符串作为字符串的整数数组
//映射(数字)将字符串数组更改为数字数组
返回编号.toString()
.拆分(“”)
.地图(编号)
.map((整数)=>integer!==0&&number%integer==0)
.减少((a,b)=>a和b)
}
var selfDividingNumbers=函数(左、右){
让res=[]
for(让i=左;i
.map((integer)=>integer!==0&&number%integer==0)
此操作检查整数数组中的单个整数是否不是0(因为SDN不能包含0)以及该数字是否可被整数自整除。此解释正确吗

如果我们在调用第二个map方法后返回它,数组会是什么样子

它将是一个真值或假值数组,每个值取决于您上面解释的条件

至于reduce方法,我完全不懂,为什么要用

reduce方法获取真值或假值数组,然后依次对它们进行and运算。这将返回单个真值或假值,本质上表示“所有值都是真的吗?”


作为对
reduce
说明的扩展,reduce需要一个回调函数,该函数包含两个参数:一个previous值和一个current值。此外,previous的第一个值可能有一个种子(在您的示例中未使用).reduce然后将迭代并将上一个值和当前值注入回调函数,使用返回值作为下一个上一个值

reduce(function(previous, current){ ... }, optionalSeedForFirstPrevious)
使用您给出的示例,这意味着
a
是以前的值,
b
是当前值。箭头函数每次返回
a和&b
的结果

因此,如果您有
[true,false,true]
,这意味着reduce的计算结果基本上是

iteration1 = true && false;
iteration2 = iteration1 && true;
return iteration2; //false
iteration1 = true && true;
iteration2 = iteration1 && true;
return iteration2; //true
如果您有
[true,true,true]
,这意味着reduce的计算结果基本上是

iteration1 = true && false;
iteration2 = iteration1 && true;
return iteration2; //false
iteration1 = true && true;
iteration2 = iteration1 && true;
return iteration2; //true

有关的更多信息。

假设我们正在处理编号
13
。调用第二个map方法后,
[1,3]
将转到
[true,false]
,reduce方法将返回
false
,因为T&&F==F?@tableguarder-是的,这正是会发生的情况。