我遇到了一个问题,在我看来它应该是相当普遍的,但我无法在任何地方找到答案,stackexchange或google。 当我在嵌套在另一个数组中的数组上使用find方法时,find方法永远不会找到整数0,无论它放在何处。所有其他数字通常都可以找到。
我可以通过将所有索引增加一个来修复我的应用中的问题,但这是相当笨重的,我真正想知道的是为什么这首先发生?并且在不更新所有索引的情况下修复它也很不错。
const ids = [
[0,1,2,3],
[4,5,6,7],
[8,9,10,11],
[12,13,14,15],
[16,17,18,19]
]
const findBlock = value => {
return ids.find( element => {
return element.find(number => {
return number === value
})
})
}
console.log(findBlock(0));
返回undefined
答案 0 :(得分:4)
您需要明确检查undefined
,因为Array#find
会返回值或undefined
。
您获取undefined
之类的0
值作为结果。但const ids = [[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 => element.includes(value));
console.log(findBlock(0));
的价值也是假值。
要搜索元素并仅获取布尔值,可以使用falsy。
$('.selector').datepicker({
beforeShowDay: function (date) {
var year = date.getFullYear()
var currentYear = new Date().getFullYear()
return [ year >= currentYear || year <= currentYear - 20 ]
}
});
&#13;
答案 1 :(得分:3)
我真正想知道的是为什么这会在第一次发生 放置?
因为内部return
返回0
时,会将其视为 falsey值
只是做到了
findBlock = value => {
return ids.find( element => {
console.log(element);
return element.find(number => {
console.log(number);
return number === value
}) != -1 //observe this line
})
}
<强>演示强>
var ids = [ [0,1,2,3], [4,5,6,7], [8,9,10,11], [12,13,14,15], [16,17,18,19] ];
var findBlock = value => {
return ids.find( element => {
return element.find(number => {
return number === value
}) != -1
})
};
console.log(findBlock(0));