iT邦幫忙

2024 iThome 鐵人賽

DAY 11
1

陣列(Array)

陣列是JavaScript中的基本數據結構,它是一個用於存儲多個任何類型的值的有序集合,它有四個常見的方法:push、pop、shift 和 unshift。

1.'push()'方法:將一個或多個元素添加到陣列的末尾。
特性:

  • 直接修改原陣列。
  • 返回陣列添加元素後的新長度。
  • 可以一次添加多個元素。
let arr = [1, 2, 3];
arr.push(4);         // arr = [1, 2, 3, 4]
arr.push(5, 6);      // arr = [1, 2, 3, 4, 5, 6]

2.'pop()'方法:用於刪除陣列的最後一個元素。
特性:

  • 直接修改原陣列,從末尾刪除最後一個元素。
  • 返回被刪除的元素。當陣列為空時,返回 undefined。
let arr = [1, 2, 3];
let lastElement = arr.pop();  // arr = [1, 2], lastElement = 3

3.'unshift()'方法:在陣列的開頭添加一個或多個元素。
特性:

  • 修改原陣列,將所有現有元素的索引向後移動,新增的元素放在陣列開頭。
  • 返回陣列添加元素後的新長度。
  • 可以一次添加多個元素。
let arr = [1, 2, 3];
arr.unshift(0);        // arr = [0, 1, 2, 3]
arr.unshift(-2, -1);   // arr = [-2, -1, 0, 1, 2, 3]

4.'shift()'方法:用於刪除陣列的第一個元素。
特性:

  • 直接刪除陣列中的第一個元素,其他所有元素的索引將自動減少。
  • 返回被刪除的元素,若陣列為空則返回 undefined。
let arr = [1, 2, 3];
let firstElement = arr.shift(); // arr = [2, 3], firstElement = 1

** 注意:
1.以上所有方法都是破壞性操作,它們會直接修改原始陣列。如果需要保留原始數據,則要先複製陣列再進行操作。
2.性能差異:對於大陣列來說,'unshift()'和'shift()'會比'push()'和'pop()'慢,因為它們需要重新調整所有元素的索引。在操作非常大的陣列時,這種性能差異會非常明顯。

物件(Object)

對象是JavaScript中用於存儲鍵值對的集合。物件是無序的,鍵可以是字符串或'Symbol',值則可以是任何類型。

物件的創建

1.對象的創建與操作機制:

  • 可以使用對象字面量{}或Object構造函數創建。
  • 對象字面量是最常用和簡潔的方式。(就是函數的時候提到過的那個)
let person = {
  name: 'John',
  age: 30
};
//或是
let person = new Object();
person.name = 'John';
person.age = 30;

2.訪問屬性:

  • 使用點表示法(object.property)或方括號表示法(object['property']),其中點表示法是最常見的訪問物件屬性的方法。
  • 方括號表示法允許使用變量作為鍵名。
console.log(person.name);  // 'John'
//或是
console.log(person['name']);  // 'John'

3.修改和添加屬性:

  • 直接通過賦值操作修改或添加屬性。如果屬性已存在,則進行修改;如果不存在,則創建新屬性。
person.age = 31;    // 修改 age 屬性
person.gender = 'male';  // 添加新屬性 gender

4.刪除屬性:

  • 使用'delete'可以刪除對象的屬性。
delete person.age;  // 刪除 age 屬性

5.檢查屬性:

  • 使用'in'或'hasOwnProperty()'檢查屬性是否存在。
console.log('name' in person);  // true
console.log(person.hasOwnProperty('name'));  // true

6.遍歷對象:

  • 使用'for...in'循環可以遍歷對象的所有可枚舉屬性。
  • Object.keys(), Object.values(), Object.entries() 方法提供了更多操作對象的方式。
for (let key in person) {
  console.log(key, person[key]);
}
console.log(Object.keys(person));     // ['name', 'gender']
console.log(Object.values(person));   // ['John', 'male']
console.log(Object.entries(person));  // [['name', 'John'], ['gender', 'male']]

特性分析:

  • 引用類型: 物件是引用類型,這意味著當將物件賦值給另一個變量時,它們指向同一個內存地址。如果對其中一個物件進行操作,另一個物件也會受到影響。
    ex:
let obj1 = { name: 'John' };
let obj2 = obj1;
obj2.name = 'Doe';
console.log(obj1.name);  // 'Doe'
  • 鍵總是字符串:即使使用數字或其他類型作為鍵,JavaScript會自動將它們轉換為字符串。ES6中引入的Symbol 是唯一不會被轉換為字符串的鍵類型。

  • 動態性:JavaScript中的物件是動態的,可以隨時添加、修改或刪除屬性。

  • 對象不保證屬性的順序


上一篇
d10 函數(完)
下一篇
d12 DOM操作
系列文
javascript基礎自學及各工具應用了解30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言