延續 Day4 的陣列常使用方法做介紹。本篇包含 lodah 中常用的 some
,every
,find
,findIndex
, slice()
some
: lodash.some()
,只要一個條件符合就回傳true
。(new Date).getFullYear()
可以取得當前日期的年份。題目:查詢陣列內是否有人成年
var isAdult = _.some(people, function (person) {
return new Date().getFullYear() - person.year >= 19;
});
console.log({ isAdult });
every
: lodash.every()
,要每一個都符合條件才回傳true
。`題目:查詢陣列內是否皆為成年。
var allAdults = _.every(people, function (person) {
return new Date().getFullYear() - person.year >= 19;
});
console.log({ allAdults });
lodash.find()
:有點類似lodash.filter()
,但是lodash.filter()
會回傳全部符合的項目,find()
則回傳單一項目。題目:找陣列 id 等於 823423,並回傳該元素。
var comment = _.find(comments, function (comment) {
return comment.id === 823423;
});
console.log(comment);
findIndex()
:和find()
功能一樣,只是會查找index
。題目:找陣列 id 等於 823423,並回傳 index
const index = _.findIndex(comments, function (comment) {
return comment.id === 823423;
});
splice(index, num, Array[])
,第一個參數是要刪除的 index 起點, 第二個參數是要刪除的數量,第三個參數之後是要新加入的內容。會回傳刪除後的陣列。slice(index, index)
,第一個參數為起點,第二個參數為終點(不包含終點),若第二個參數不填預設為最後。回傳一個 array object。若是利用拆分的方式,掠過index
不處理。可以達到splice()
的效果。...
spread operator(ES6 功能),可以將陣列轉換成單一數組,或將單一數組轉換成陣列。下面的例子因為連續使用comments.slice()
,所以會讓數值變成[Array[], Array[]]
,為了打破第二層的 array,需使用...
,把結構轉變成[{}, {}, {}, {}, ...]
。實作: 刪除該 index 元素。
const newComments = [..._.slice(comments, 0, index), ..._.slice(comments, index + 1)];
console.log(newComments);