「JavaScript 30」學習筆記(七)

前言

本文為「JavaScript 30」教學影片的學習筆記。

目標

再次練習對陣列進行排序或計算。

筆記

  1. 判斷是否至少有一個人滿 18 歲。
1
2
3
4
5
6
const isAdult = people.some(function (person) {
const currentYear = (new Date()).getFullYear();
if (currentYear - person.year >= 19) {
return true;
}
})
  • some() 方法會測試陣列中是否至少有一個元素通過由給定之函式所實作的測試。

可以簡化為以下:

1
const isAdult = people.some(person => ((new Date()).getFullYear() - person.year >= 19));

  1. 判斷是否所有人都滿 19 歲。
1
const allAdults = people.every(person => ((new Date()).getFullYear() - person.year >= 19));
  • every() 方法會測試陣列中的所有元素是否都通過了由給定之函式所實作的測試。

  1. 找到特定 id 的留言。
1
const comment = comments.find(comment => comment.id === 823423);
  • find() 方法會回傳第一個滿足所提供之測試函式的元素値。否則回傳 undefined。

  1. 刪除特定 id 的留言。
1
2
const index = comments.findIndex(comment => comment.id === 823423);
comments.splice(index, 1);
  • findIndex 方法將依據提供的測試函式,尋找陣列中符合的元素,並返回其 index。如果沒有符合的物件,將返回 -1
  • splice() 方法可以藉由刪除既有元素並/或加入新元素來改變一個陣列的內容。

或者可以建立一個新的陣列,列出要顯示的留言。

1
2
3
4
const newComments = [
...comments.slice(0, index),
...comments.slice(index + 1)
];
  • slice() 方法會回傳一個新陣列物件。