数组过滤器返回0个结果

时间:2018-07-03 15:27:56

标签: javascript

不知道为什么当明显有9个空字符串时为什么会返回0。

<TabbedShowLayout>

4 个答案:

答案 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 === " ")