Mga Array ng JavaScript
JavaScript 数组用于在单一变量中存储多个值。
什么是数组?
数组是一种特殊的变量,它能够一次存放一个以上的值。
如果您有一个项目清单(例如,汽车品牌列表),在单个变量中存储汽车品牌应该是这样的:
var car1 = "Saab"; var car2 = "Volvo"; var car3 = "BMW";
不过,假如您希望遍历所有汽车并找到一个特定的值?假如不是三个汽车品牌而是三百个呢?
解决方法就是数组!
数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值。
创建数组
使用数组文本是创建 JavaScript 数组最简单的方法。
语法:
var array-name = [item1, item2, ...];
Mga halimbawa
var cars = ["Saab", "Volvo", "BMW"];
空格和折行并不重要。声明可横跨多行:
Mga halimbawa
var cars = [ "Saab", "Volvo", "BMW" ];
请不要在最后一个元素之后写逗号(比如 "BMW",)。
可能存在跨浏览器兼容性问题。
使用 JavaScript 关键词 new
下面的例子也会创建数组,并为其赋值:
Mga halimbawa
var cars = new Array("Saab", "Volvo", "BMW");
以上两个例子效果完全一样。无需使用 new Array()
。
出于简洁、可读性和执行速度的考虑,请使用第一种方法(数组文本方法)。
访问数组元素
我们通过引用索引号(下标号)来引用某个数组元素。
此语句访问 cars 中的首个元素的值:
var name = cars[0];
此语句修改 cars 中的首个元素:
cars[0] = "Opel";
Mga halimbawa
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars[0];
[0] 是数组中的第一个元素。[1] 是第二个。数组索引从 0 开始。
更改数组元素
此语句修改了 cars 中第一个元素的值:
cars[0] = "Opel";
Mga halimbawa
var cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel"; document.getElementById("demo").innerHTML = cars[0];
Paggalaan ng buong array
Sa pamamagitan ng JavaScript, maaari mong makita ang buong array sa pamamagitan ng pangalan ng array:
Mga halimbawa
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
Ang array ay isang bagay
Ang array ay isang espesyal na uri ng bagay. Sa JavaScript, gamitin ang array sa array. typeof
Ang operator ay ibabalik "object".
Ngunit, ang pinakamabuti sa paglalarawan ng JavaScript array ay sa pamamagitan ng array.
Paggamit ng arraybilangUpang makita ang "elemento" nito. Sa kasong ito,person[0]
Ibalik Bill:
Array:
var person = ["Bill", "Gates", 62];
Ang paggamit ng bagayPangalanUpang makita ang "miyembro" nito. Sa kasong ito,person.firstName
Ibalik Bill:
Bagay:
var person = {firstName:"Bill", lastName:"Gates", age:19};
Ang elemento ng array ay maaaring maging isang bagay
Ang variable ng JavaScript ay maaaring maging isang bagay.
Dahil dito, maaari mong ilagay ang iba't ibang uri ng variable sa parehong array.
Maaari mong ilagay ang mga bagay sa array. Maaari mong ilagay ang mga function sa array. At kahit na maaari mong ilagay ang array sa array:
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
Katangian at mga paraan ng array
Ang tunay na kapangyarihan ng JavaScript array ay nakatago sa mga katangian at mga paraan ng array:
Mga halimbawa
var x = cars.length; // ang katangian ng haba ay ibabalik ang bilang ng mga elemento var y = cars.sort(); // ang sort() na paraan ay nagtatala ng array
Aaralain namin ang mga paraan ng array sa susunod na kabanata.
Katangian ng haba
length
Ang katangian ay ibabalik ang haba ng array (bilang ng mga elemento ng array).
Mga halimbawa
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // ang haba ng fruits ay 4
length
Ang katangian ay lalong malaki kaysa sa pinakamataas na indeks ng array (index).
Paggalaan ng unang elemento ng array
Mga halimbawa
fruits = ["Banana", "Orange", "Apple", "Mango"]; var first = fruits[0];
Paggalaan ng huling elemento ng array
Mga halimbawa
fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
paglalakad ng elemento ng array
Ang pinakamalaking para sa paglalakad ng array ay gumamit ng "for
"Iyong paglikha ng:"
Mga halimbawa
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>"; }
Maaari ring gamitin Array.foreach()
Function:
Mga halimbawa
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
pagdagdag ng elemento ng array
Ang pinakamahusay na paraan para sa pagdagdag ng bagong elemento sa array ay push()
Mga paraan:
Mga halimbawa
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // Idinagdag ng bagong elemento (Lemon) sa fruits
Maaari ring gamitin length
Para sa pagdagdag ng bagong elemento sa array, magagamit ang
Mga halimbawa
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // Idinagdag ng bagong elemento (Lemon) sa fruits
Babala!
Ang pagdagdag ng pinakamataas na indeks ng elemento ay maaring gumawa ng undefined na "butas" sa array:
Mga halimbawa
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; // Idinagdag ng bagong elemento (Lemon) sa fruits
Asosyasyon array
Maraming elementong pang-programming ang sumusuporta sa array na may pangalang indeks.
Ang array na may pangalang indeks ay tinatawag na asosyasyon array (o hash).
JavaScript Hindi suportadoang array na may pangalang indeks.
Sa JavaScript, ang array ay puwedeng gamitin lamangnumerong index。
Mga halimbawa
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 62; var x = person.length; // person.length ay nagbibigay ng 3 var y = person[0]; // person[0] ay nagbibigay ng "Bill"
Babala!
Kung gamit mo ang pangalang indeks, magiging standard na bagay ang array na ito sa pamamagitan ng JavaScript.
Pagkatapos, ang lahat ng mga paraan at mga katangian ng array ay magbibigay ng hindi tama na mga resulta.
Mga halimbawa:
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length ay magiging 0 var y = person[0]; // person[0] ay magiging undefined
Ang pagkakaiba ng array at bagay
Sa JavaScriptArrayGamitinnumerong index。
Sa JavaScriptbagayGamitinPangalang index。
Ang array ay isang espesyal na uri ng bagay, na may mga numerong index.
Kung kailangan gamitin ang array, o kung kailangan gamitin ang bagay?
- Ang JavaScript ay hindi sumusuporta sa asosyatibong array
- Kung gusto mong magkaroon ng pangalan na elementoteksto (teksto)kaya dapat gamitinbagay。
- Kung gusto mong magkaroon ng pangalan na elementobilangkaya dapat gamitinArray。
Iwasan ang new Array()
Hindi kailangan gamitin ang in-built array constructor ng JavaScript new Array()
。
Gumamit ng []
Sa halip!
Ang dalawang magkakaibang statement na ito ay naglikha ng bagong walang laman na array na may pangalang points:
var points = new Array(); // Mas masamang uri var points = []; // Magandang uri
Ang dalawang magkakaibang statement na ito ay naglikha ng bagong array na may anim na bilang:
var points = new Array(40, 100, 1, 5, 25, 10); // Mas masamang uri var points = [40, 100, 1, 5, 25, 10]; // Magandang uri
new
Ang keyword ay magiging mas kompleks ang code. Ito ay magiging sanhi din ng mga hindi inaasahang resulta:
var points = new Array(40, 100); // paglikha ng array na may dalawang elemento (40 at 100)
Ano ang magiging resulta kung alisin ko ang isa sa mga elemento?
var points = new Array(40); // paglikha ng array na may 40 hindi na nakakalilang mga elemento!!!
Paano mapansin ang array
Ang karaniwang problema ay: Paano ko malalaman kung ang isang variable ay array?
Ang problema ay ang operator ng JavaScript typeof
Nanggagaling sa "object
":
var fruits = ["Banana", "Orange", "Apple", "Mango"]; typeof fruits; // Nanggagaling sa object
Ang operator na typeof ay nanggagaling sa "object", dahil ang array ng JavaScript ay isang bagay.
解决方案 1:
为了解决这个问题,ECMAScript 5 定义了新方法 Array.isArray()
:
Array.isArray(fruits); // 返回 true
此方案的问题在于 ECMAScript 5 不支持老的浏览器。
解决方案 2:
创建您自己的 isArray()
函数以解决此问题:
function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }
假如参数为数组,则上面的函数始终返回 true。
或者更准确的解释是:假如对象原型包含单词 "Array" 则返回 true。
解决方案 3:
假如对象由给定的构造器创建,则 instanceof 运算符返回 true:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // 返回 true