不知道为什么当明显有9个空字符串时为什么会返回0。
<TabbedShowLayout>
答案 0 :(得分:5)
箭头中的{}
表示函数主体,并且在该函数主体中没有返回任何内容。
slot => { slot === " "})
与
相同function(slot){
slot === " ";
// No return
}
考虑MDN Arrow Functions - Function Body:
箭头功能可以具有“简洁主体”或通常的“块” 身体”。
在简洁的正文中,仅指定一个表达式,该表达式成为 显式返回值。在块体中,必须使用显式
return
声明。
您要
function isEmpty() {
const emptySlots = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
.filter(slot => slot === " ")
return emptySlots.length === 9;
}
console.log(isEmpty()); // true
答案 1 :(得分:1)
箭头功能有一个怪癖,需要一些时间才能习惯。如果使用{
和}
,则必须使用return
关键字从箭头函数返回一个值。在您的情况下,返回值为undefined
所以
function isEmpty(){
const emptySlots = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
.filter(slot => { return slot === " "})
return emptySlots.length === 9; // emptySlots.length is 0 for some reason
}
或
function isEmpty(){
const emptySlots = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
.filter(slot => slot === " ")
return emptySlots.length === 9; // emptySlots.length is 0 for some reason
}
答案 2 :(得分:0)
对于您的sort()
函数,您有两个可能的短轴
.sort(vars => statement);
.sort(vars => {
return statement
})
因此,当您添加.sort(vars => {statement});
时,该函数期望返回值。如果不包含它们,该函数会将第一行作为返回值。
希望这会有所帮助:)
function isEmpty(){
const emptySlots = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '].filter(slot => slot === " ")
return emptySlots.length === 9;
// emptySlots.length is 0 for some reason
}
console.log(isEmpty());
答案 3 :(得分:0)
只需返回即可:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="Org-popover-body Org-popover-body-1">
1
</div>
<div class="Org-popover-body Org-popover-body-2">
2
</div>
<div class="Org-popover-body Org-popover-body-3">
3
</div>
<div class="Org-popover-body Org-popover-body-4">
4
</div>
<div class="Org-popover-body Org-popover-body-5">
5
</div>
<div class="Org-popover-body Org-popover-body-6">
6
</div>
您也可以这样做:
arr.filter(slot => slot === " ")