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 Array.find方法跳过0的整数?_Javascript_Arrays_Find - Fatal编程技术网

Javascript Array.find方法跳过0的整数?

Javascript Array.find方法跳过0的整数?,javascript,arrays,find,Javascript,Arrays,Find,我遇到了一个问题,在我看来这应该是相当普遍的,但我在任何地方都找不到答案,stackexchange或google。 当我对嵌套在另一个数组中的数组使用find方法时,find方法将永远找不到整数0,不管它放在哪里。所有其他数字都是正常的 我可以通过将所有索引增加1来解决我的应用程序中的问题,但这相当笨拙,我真正想知道的是为什么会发生这种情况?一种不用更新所有索引就能修复它的方法也不错 const-id=[ [0,1,2,3], [4,5,6,7], [8,9,10,11], [12,13,1

我遇到了一个问题,在我看来这应该是相当普遍的,但我在任何地方都找不到答案,stackexchange或google。 当我对嵌套在另一个数组中的数组使用find方法时,find方法将永远找不到整数0,不管它放在哪里。所有其他数字都是正常的

我可以通过将所有索引增加1来解决我的应用程序中的问题,但这相当笨拙,我真正想知道的是为什么会发生这种情况?一种不用更新所有索引就能修复它的方法也不错

const-id=[
[0,1,2,3],
[4,5,6,7],
[8,9,10,11],
[12,13,14,15],
[16,17,18,19]
]
const findBlock=value=>{
返回id.find(元素=>{
返回元素。查找(编号=>{
返回编号===值
})
})
}
console.log(findBlock(0))
我真正想知道的是为什么这会发生在第一时间
地点

因为当内部
return
返回
0
时,它被视为假值

去吧

findBlock = value => {
    return ids.find( element => { 
        console.log(element);
        return element.find(number => { 
            console.log(number);
            return number === value 
        }) != -1 //observe this line
    })
}
演示

varids=[[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15],[16,17,18,19];
var findBlock=value=>{
返回id.find(元素=>{
返回元素。查找(编号=>{
返回编号===值
}) != -1
})
};

console.log(findBlock(0))
您需要显式检查
未定义
,因为返回值或
未定义

结果是取
undefined
这样的值。但是
0
的值也是一个错误的值

要搜索元素并仅获取布尔值,可以使用

const id=[[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15],[16,17,18,19]]
const findBlock=value=>ids.find(元素=>element.includes(值));

console.log(findBlock(0))注意:您可以通过在上面添加
console.log(number)
returnnumber===value
对其进行调试。您会看到它实际上是在查找0,因为没有打印
1
2
3
。到那时,问题会更加明显。