ES5 時期除了昨天介紹的那些功能,其中還有一大塊內容是有關 Array 的操作,讓我們繼續吧
var arr = [1, 2, 3];
var notArr = "Hello";
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(notArr)); // false
var arr = [1, 2, 3];
arr.forEach((element, index) => {
console.log("Element at index " + index + " is " + element);
});
// 輸出:
// Element at index 0 is 1
// Element at index 1 is 2
// Element at index 2 is 3
var arr = [1, 2, 3];
var doubled = arr.map(function(x){
return x * 2
});
console.log(doubled); // [2, 4, 6]
var arr = [1, 2, 3, 4, 5];
var evenNumbers = arr.filter(function(x){
return x % 2 === 0
});
console.log(evenNumbers); // [2, 4]
var numberArr = [1,2,3,4]
var totalNumber = numberArr.reduce(function(accumlator, currentValue){
return accumlator + currentValue
})
// loop1. 1 + 2(以開始進行第二次的疊代)
// loop2. 3 + 3
// loop3. 6 + 10
然而若沒有設立初始值時會有可能發生問題,尤其是以下兩種狀況
a. 陣列為空,無法獲得第一個索引值
b. 要疊代陣列內的物件
因此還是建議放上初始值
const items = [
{ name: 'Apple', quantity: 10 },
{ name: 'Banana', quantity: 5 },
{ name: 'Orange', quantity: 8 }
];
// 使用 reduce 來累加 quantity 屬性值
const totalQuantity = items.reduce(function(accumulator, item){
return accumulator + item.quantity;
}, 0); // 初始值設為 0
// 這邊若不建立初始值,那麼第二次疊代時的 accumlator 為 item[0] 的值,會發生錯誤
console.log(totalQuantity); // 23
var arr = [2, 4, 6];
var allEven = arr.every(function(x){
return x % 2 === 0
});
console.log(allEven); // true
var arr = [1, 2, 3, 4];
var hasEven = arr.some(function(x){
return x % 2 === 0
});
console.log(hasEven); // true
var arr = [1, 2, 3, 4, 3];
var index = arr.indexOf(3);
console.log(index); // 2,返回第一個 3 的索引
var arr = [1, 2, 3, 4, 3];
var index = arr.indexOf(3);
console.log(index); // 2,返回第一個 3 的索引