ອະນຸຍາດ JavaScript
- ບ່ອນໄກຫຼັງຈາກ ກົນລະບົບ JS ອັນດັບຕໍ່ສູງ
- ບ່ອນໄກຕໍ່ໄປ ກົນລະບົບ JS
JavaScript 数组用于在单一变量中存储多个值。
什么是数组?
数组是一种特殊的变量,它能够一次存放一个以上的值。
如果您有一个项目清单(例如,汽车品牌列表),在单个变量中存储汽车品牌应该是这样的:
var car1 = "Saab"; var car2 = "Volvo"; var car3 = "BMW";
不过,假如您希望遍历所有汽车并找到一个特定的值?假如不是三个汽车品牌而是三百个呢?
解决方法就是数组!
数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值。
创建数组
使用数组文本是创建 JavaScript 数组最简单的方法。
语法:
var array-name = [item1, item2, ...];
ຕົວຢ່າງ:
var cars = ["Saab", "Volvo", "BMW"];
空格和折行并不重要。声明可横跨多行:
ຕົວຢ່າງ:
var cars = [ "Saab", "Volvo", "BMW"
ບໍ່ຕ້ອງຂຽນຄຳສັງວັດຖຸພາຍຫຼັງວັດຖຸສຸດທ້າຍ (ອີງຕາມ "BMW",).
ອາດມີບັນຫາການເຊື່ອມຕໍ່ອາກາດບັນຊີ.
ໃຊ້ຄຳສັບພິມ JavaScript
ຕົວຢ່າງທີ່ລຽງອີກຈະສ້າງຈຸດການທີ່ຈະຈຸດວັດຖຸ, ແລະ ຈະຈຸດວັດຖຸຕ່າງໆ:
ຕົວຢ່າງ:
var cars = new Array("Saab", "Volvo", "BMW");
ຄຳນັ້ນສອງຄັ້ງມີຜົນທັງໝົດຄືກັນ. ບໍ່ຕ້ອງໃຊ້ new Array()
.
ສຳລັບຄວາມລະອຽດຄວາມເບິ່ງດີ ແລະ ຄວາມໄວຂອງການດຳເນີນ, ຍັງມີການໃຊ້ວິທີທຳອິດ (ວິທີຈຸດການຈຸດການ).
ພິສູດວັດຖຸຈຸດການ
ພວກເຮົາຜ່ານການອ້າງອີງບັນນິວຢູ່ຈຸດການເພື່ອອ້າງອີງວັດຖຸຈຸດການ.
ຄຳສັ່ງນີ້ໄດ້ເຂົ້າຫາຄູ່ຄວາມຂອງວັດຖຸຄັນທີໜຶ່ງຂອງ cars:
var name = cars[0];
ຄຳສັ່ງນີ້ໄດ້ປ່ຽນວັດຖຸຄັນທີໜຶ່ງຂອງ cars:
cars[0] = "Opel";
ຕົວຢ່າງ:
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars[0];
[0] ແມ່ນວັດຖຸຄັນທີໜຶ່ງໃນຈຸດການ. [1] ແມ່ນວັດຖຸຄັນທີສອງ. ບັນນິວຢູ່ຈຸດການເລີ່ມໃນ 0.
ປ່ຽນວັດຖຸຕົວເລກຂອງຈຸດການ
ຄຳສັ່ງນີ້ໄດ້ປ່ຽນວັດຖຸຄັນທີໜຶ່ງຂອງ cars:
cars[0] = "Opel";
ຕົວຢ່າງ:
var cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel"; document.getElementById("demo").innerHTML = cars[0];
访问完整数组
通过 JavaScript,可通过引用数组名来访问完整数组:
ຕົວຢ່າງ:
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
数组是对象
数组是一种特殊类型的对象。在 JavaScript 中对数组使用 typeof
运算符会返回 "object"。
但是,JavaScript 数组最好以数组来描述。
数组使用ໂຕລະສັບ来访问其“元素”。在本例中,person[0]
返回 Bill:
数组:
var person = ["Bill", "Gates", 62];
对象使用名称来访问其“成员”。在本例中,person.firstName
返回 Bill:
对象:
var person = {firstName:"Bill", lastName:"Gates", age:19};
数组元素可以是对象
JavaScript 变量可以是对象。数组是特殊类型的对象。
正因如此,您可以在相同数组中存放不同类型的变量。
您可以在数组保存对象。您可以在数组中保存函数。你甚至可以在数组中保存数组:
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
数组属性和方法
JavaScript 数组的真实力量隐藏在数组的属性和方法中:
ຕົວຢ່າງ:
var x = cars.length; // length 属性返回元素的数量 var y = cars.sort(); // sort() 方法对数组进行排序
ພວກເຮົາຈະຮຽນການສາຍລະບາຍອາກາດໃນປີສີນລາວ.
length 属性
length
ບັນດາບັນທັກຈະປະກອບຄວາມຍາວຂອງອາກາດ (ຈຳນວນສິ່ງ).
ຕົວຢ່າງ:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // fruits 的长度是 4
length
ບັນດາບັນທັກຈະຫຼາຍກວ່າດັດຊະນະສຸດທ້າຍຂອງອາກາດ (ບັນທາງ).
ການເຂົ້າເຖິງສິ່ງທໍາອິດຂອງອາກາດ
ຕົວຢ່າງ:
fruits = ["Banana", "Orange", "Apple", "Mango"]; var first = fruits[0];
ການເຂົ້າເຖິງສິ່ງສຸດທ້າຍຂອງອາກາດ
ຕົວຢ່າງ:
fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
ຈັດການການອອກລາຍການອາກາດສິ່ງ
ການຈັດການການອອກລາຍການອາກາດແບບທີ່ມີຄວາມປອດໄພແມ່ນການໃຊ້ "for
"ການດຳເນີນ: "
ຕົວຢ່າງ:
var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fLen = fruits.length; text = "<ul>"; for (i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; }
ເຈົ້າກໍ່ສາມາດນຳໃຊ້ Array.foreach()
ກົນລະບົບ:
ຕົວຢ່າງ:
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
ສະເໜີສິ່ງໃໝ່ໃນຈຸດມາດຕະການ
ການສະເໜີສິ່ງໃໝ່ໃນຈຸດມາດຕະການຈະດີທີ່ສຸດແມ່ນ push()
ການສະເໜີສິ່ງໃໝ່ຫຼັງຈຸດມາດຕະການ:
ຕົວຢ່າງ:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // ສະເໜີສິ່ງໃໝ່ໃນ fruits (Lemon)
ຫຼາຍກວ່ານັ້ນກໍ່ສາມາດນຳໃຊ້ length
ການສະເໜີສິ່ງໃໝ່ຫຼັງຈຸດມາດຕະການ:
ຕົວຢ່າງ:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // ສະເໜີສິ່ງໃໝ່ໃນ fruits (Lemon)
ຄໍາເຕືອນ!
ສະເໜີສິ່ງໃນຈຸດມາດຕະການສຸດທ້າຍຈະສ້າງຈຸດມາດຕະການບໍ່ມີຈຸດມາດຕະການ:
ຕົວຢ່າງ:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; // ສະເໜີສິ່ງໃໝ່ໃນ fruits (Lemon)
ຈຸດມາດຕະການການຈັດອັນສັດ
ຫຼາຍສິ່ງທີ່ນຳໃຊ້ຈຸດມາດຕະການຊື່.
ຈຸດມາດຕະການຊື່ທີ່ມີຈຸດມາດຕະການຊື່ຈະເອີ້ນວ່າຈຸດມາດຕະການການຈັດອັນສັດ (ຫຼືອັນສັດຫຼອກ).
JavaScript ບໍ່ສາມາດນຳໃຊ້ຈຸດມາດຕະການຊື່.
ໃນ JavaScript ຈຸດມາດຕະການຈະນຳໃຊ້ບັນດາວັດສະດຸ.
ຕົວຢ່າງ:
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 62; var x = person.length; // person.length ກັບຄື 3 var y = person[0]; // person[0] ກັບຄື "Bill"
ຄໍາເຕືອນ!
ຖ້າເຈົ້ານຳໃຊ້ຄວາມຊື່ບັນທຶກຈຸດມາດຕະການ JavaScript ຈະການປ່ຽນຈຸດມາດຕະການເປັນອັນສັດພິເສດ.
ຫຼັງຈາກນັ້ນທຸກການພາສານຂອງຈຸດມາດຕະການຂອງຈຸດມາດຕະການຈະມີຜົນບໍ່ຖືກຕ້ອງ.
ຕົວຢ່າງ:
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length ຈະປະກາດ 0 var y = person[0]; // person[0] ຈະປະກາດ undefined
ການແຕກຕ່າງບັນດາ Array ແລະ Object
ໃນ JavaScriptArrayບໍ່ຄິດວ່າບັນດາວັດສະດຸ.
ໃນ JavaScriptໂອບີເຈັນບໍ່ຄິດວ່າຕົວເມືອງນຳມາເລືອກ.
Array ແມ່ນຊະນິດຂອງ Object ທີ່ມີບັນດາວັດສະດຸທີ່ແບບເບື້ອງຂອງໂຕລະສັບ.
ຖ້າຈະໃຊ້ Array ຫຼື Object?
- JavaScript ບໍ່ສາມາດສະໜັບສະໜູນ Array ທີ່ມີຕົວເມືອງຜູ້ຈັດການ.
- ຖ້າທີ່ຈະຫວັງວ່າຕົວເມືອງຈະເປັນຄຳເວົ້າ (ຂຽນ)ຖ້າທີ່ຈະໃຊ້ໂອບີເຈັນ.
- ຖ້າທີ່ຈະຫວັງວ່າຕົວເມືອງຈະເປັນໂຕລະສັບຖ້າທີ່ຈະໃຊ້Array.
ຫຼີກລ່ຽງຄວາມພັດທະນາ new Array()
ບໍ່ມີຄວາມຈຳເປັນທີ່ຈະໃຊ້ຄວາມພັດທະນາ Array ພາຍໃນ JavaScript new Array()
.
ຂ້ອຍຫວັງວ່າຈະໃຊ້ []
ຖ້າວ່າບໍ່ຈະເຮັດແນວນັ້ນ!
ຄຳວຽກງານທີ່ແຕກຕ່າງກັນທີ່ສ້າງບັນດາວັດສະດຸທີ່ບໍ່ມີຕົວເມືອງ points ຢ່າງໃດ:
var points = new Array(); // ບໍ່ດີ var points = []; // ດີ
ຄຳວຽກງານທີ່ແຕກຕ່າງກັນທີ່ສ້າງບັນດາວັດສະດຸທີ່ມີຫົກໂຕນໃໝ່:
var points = new Array(40, 100, 1, 5, 25, 10); // ບໍ່ດີ var points = [40, 100, 1, 5, 25, 10]; // ດີ
new
ຄຳວຽກງານຈະເຮັດໃຫ້ກະຕຸ້ນຄຳລະບຸການ. ມັນຍັງຈະສ້າງຜົນທີ່ບໍ່ຄາດຄິດໄດ້:
var points = new Array(40, 100); // ສ້າງບັນດາວັດສະດຸທີ່ມີສອງປະກອບ (40 ແລະ 100)
ຖ້າທີ່ລຶບປະກອບຫນຶ່ງອອກຈະເປັນແນວໃດ?
var points = new Array(40); // ສ້າງບັນດາວັດສະດຸທີ່ບໍ່ມີຄວາມພິຈາລະນາ 40!
ບວກວ່າບັນດາວັດສະດຸ
ບັນຫາທົ່ວໄປຈະເປັນ: ຂ້ອຍຈະຮູ້ວ່າວ່າຄວາມເປັນ Array ຢ່າງໃດ?
ບັນຫາຢູ່ທີ່ຄຳໃຊ້ JavaScript operator typeof
ປະກາດ 'object
“:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; typeof fruits; // ປະກາດ 'object'
ການແທນພາສາຂອງຄຳໃຊ້ 'typeof' ປະກາດ 'object' ຍ້ອນວ່າ JavaScript Array ແມ່ນເປັນບັນດາວັດສະດຸ。
ການແກ້ໄຂ 1:
ເພື່ອແກ້ໄຂບັນຫານີ້, ECMAScript 5 ໄດ້ອອກຂອງກົນລະບົບໃໝ່ Array.isArray()
:
Array.isArray(fruits); // ກັບຄວາມແນ່ນອນ
ບັນຫາຂອງການແກ້ໄຂນີ້ແມ່ນ ECMAScript 5 ບໍ່ສາມາດອະທິບາຍສະໜອງສັບສະນະອັນເກົ່າ.
ການແກ້ໄຂ 2:
ສ້າງທີ່ຂອງເຈົ້າເອງ isArray()
ກົນລະບົບການແກ້ໄຂທີ່ພົບຄວາມບັນຫານີ້:
function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }
ຖ້າປະເທດງານເປັນອັນໜັງສະໜອງ, ກົນລະບົບຂອງຫົວພາບຈະກັບຄືວ່າຄວາມແນ່ນອນ.
ຫຼືການອະທິບາຍທີ່ຫຼາຍກວ່າ: ຖ້າອັນໜັງທີ່ສະແດງປະກອບທີ່ກວມມີຄຳເວົ້າ "Array" ກໍ່ຈະກັບຄືວ່າຄວາມແນ່ນອນ.
ການແກ້ໄຂ 3:
ຖ້າອັນໜັງໄດ້ຖືກສ້າງຈາກຄວາມສ້າງທີ່ເກີດຈາກ instanceof ກົນລະບົບການກະທຳຄື
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // ກັບຄວາມແນ່ນອນ
- ບ່ອນໄກຫຼັງຈາກ ກົນລະບົບ JS ອັນດັບຕໍ່ສູງ
- ບ່ອນໄກຕໍ່ໄປ ກົນລະບົບ JS