實做:Array方法操作
學習重點
- Array方法操作:some , every , find , findIndex , slice , splice
解說
請把程式碼貼到瀏覽器console查看結果
1 | const people = [ |
some
some()
方法中直到某個陣列元素使此函數為 true,就立即返回 true。所以可以用來判斷一個陣列中,是否存在某個符合條件的值1
2
3
4
5
6
7
const isAdult = people.some( person => {
const currentYear = (new Date()).getFullYear();
return currentYear - person.year >= 19;
});
console.log({isAdult}); // { isAdult : true };
every
every()
方法中除非所有值都使此函數為 true,才會返回 true 值,否則為 false。主要用處,即判斷是否所有元素都符合條件。1
2
3const allAdult = people.every( person => new Date().getFullYear() - person.year >= 19);
console.log({allAdult}); // { allAdult : false };
find
find()
方法會回傳第一個滿足所提供之測試函式的元素值。否則回傳 undefined。1
2
3
4
5
6
7
8
9const comment = comments.find(comment => comment.id == 823423);
console.log({comment});
/*
{
id: 823423,
text: "Super good"
}
*/findIndex
findIndex()
方法將依據提供的測試函式,尋找陣列中符合的元素,並返回其 index(索引)。如果沒有符合的對象,將返回 -1 。1
2
3const index = comments.findIndex(comment => comment.id == 823423);
console.log({index}); //1slice
slice()
方法返回一個從開始到結束(不包括結束)選擇的陣列的一部分淺拷貝到一個新陣列。且原始數組不會被修改
。1
2
3
4
5
6
7
8
9
10var animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]splice
splice()
原陣列會被修改。第二個參數代表要刪掉的元素個數
,之後可選的參數,表示要替補被刪除位置的元素。1
2
3
4
5
6
7
8
9
10var months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at 1st index position
console.log(months);
// expected output: Array ['Jan', 'Feb', 'March', 'April', 'June']
months.splice(4, 1, 'May');
// replaces 1 element at 4th index
console.log(months);
// expected output: Array ['Jan', 'Feb', 'March', 'April', 'May']所以想要删除一個陣列元素,有兩種方式
1
2
3
4
5
6
7
8// 删除方法一,splice()
comments.splice(index, 1);
// 删除方法二,slice
const newComments = [
...comments.slice(0, index),
...comments.slice(index + 1)
];