亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 length 屬性出現在 Javascript 中的結束標簽之后

為什么 length 屬性出現在 Javascript 中的結束標簽之后

慕田峪4524236 2023-06-29 22:40:57
我在理解“長度”屬性的位置時遇到了一些困難,在我作為 JavaScript 課程的一部分制作的待辦事項列表應用程序中。任務列表:const todos = [{    text: 'First task',    completed: true}, {    text: 'Second task',    completed: false}, {    text: 'Third task',    completed: true}]我的問題: 下面的代碼為我提供了仍需要完成的任務總數。我不明白的是:為什么 .length 屬性出現在結束“})”之后?我會假設代碼是!todo.completed.length,而不是!todo.completed}).length. 我可以看到只有后者有效 - 但我試圖理解為什么。謝謝你??!let remaining = todos.filter(function(todo){    return !todo.completed}).length
查看完整描述

2 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

這是因為Array.prototype.filter返回一個數組。

例如,這兩個語句是等效的:


[1, 2, 3].filter(function(){

? return false

}).length


[].length

這是因為:


[1, 2, 3].filter(function(){

? return false

})

返回[]。


var one = [1, 2, 3].filter(function() {

? return false

}) // Removes all elements from array


var two = []


console.log(one, one.length)

console.log(two, two.length)


查看完整回答
反對 回復 2023-06-29
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

首先:過濾器函數迭代每個待辦事項對象并返回一個新的待辦事項對象列表。

每個 todo 對象都會傳遞給您作為參數提供的函數(在本例中為匿名函數),僅當該函數返回 true 時,todo 對象才會添加到新列表中。

由于您想知道仍需要完成的待辦事項數量,因此您返回 !todo.completed,因為當 todo.completed 為 false 時,這將返回 true。

當過濾器函數迭代每個對象時,它會返回新列表,此時您可以訪問它的長度。

返回 !todo.completed.lenght 并沒有任何意義,因為您試圖獲取布爾值的長度,而過濾函數需要 true 或 false。


查看完整回答
反對 回復 2023-06-29
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號