數組元素變更
- 除了普通的方式,還可以使用push往數組末尾添加元素。
當調用push方法時,會發生兩件事,首先是把元素添加到數組中,其次是返回新數組的長度。如下我們用result捕獲返回值就是新數組的長度。
var animals=[];
animals.push("Cat");
>> 1
result=animals.push("Dog");
>> 2
console.log(result);
console.log(animals);
>> 2
>> ["Cat", "Dog"]
- 可以使用pop彈出數組最后元素
當調用pop方法時,會發生兩件事,首先是把數組最后一個元素從數組彈出,其次是返回彈出元素的值。如下我們用result2捕獲返回值就是彈出元素的值。
result2=animals.pop();
console.log(result2);
console.log(animals);
>> Dog
>> ["Cat"]
- 可以使用unshift往數組頭部添加元素
也是做兩件事,首先往數組頭部插入元素,其次返回新數組的長度
result=animals.unshift("Duck");
console.log(result);
console.log(animals);
>> 2
>> ["Duck", "Cat"]
- 可以使用shift移除數組頭部的元素
也是做兩件事,先把數組第一個元素彈出,其次是返回彈出元素的值。
result=animals.shift();
console.log(result);
console.log(animals);
>> Duck
>> ["Cat"]
數組拼接
使用+操作符則是把兩個字符串連接成一個新的字符串,會返回包含所有元素的一個字符串,元素之間用逗號隔開。
數組拼接成新的大數組需要使用contact函數,該函數返回一個新的大數組并不改變原來的數組。
var a=['one',2,3];
var b=['third','fourth',true]
a+b
>> "one,2,3third,fourth,true"
a.concat(b);
>> ["one", 2, 3, "third", "fourth", true]
a
>> ["one", 2, 3]
b
>> ["third", "fourth", true]
可以拼接多個數組
var a=['one',2,3];
var b=['third','fourth',true];
var c=["michael",["nick","nick2"]];
a.concat(b,c);
>> ["one", 2, 3, "third", "fourth", true, "michael", Array[2]]
a.concat(b,c)[7][0]
>> "nick"
查找數組某個元素的索引
如果要找的元素不在數組中,返回值是-1,查找嵌套數組往往返回-1
var c=["michael","eee",["nick","nick2"],100];
console.log(c.indexOf("michael"));
console.log(c.indexOf(["nick","nick2"]));
>> 0
>> -1
console.log(c.indexOf(100));
>> 3
console.log(c.indexOf(10000));
>> -1
如果要找的元素在數組中出現多次,那么我們就返回第一次出現的元素位置
var c=["michael","eee",["nick","nick2"],"eee"];
console.log(c.indexOf("eee"));
>> 1
把數組轉換成字符串
可以使用join把數組中所有的元素連接到一起,形成一個大字符串。join方法不傳入參數的話默認返回包含所有元素的一個字符串,元素之間用逗號隔開。
var c=["michael",["nick","nick2"],34];
c.join();
>> "michael,nick,nick2,34"
c.join(' * ');
>> "michael * nick,nick2 * 34"
c.join(" -->sss--> ")
>> "michael -->sss--> nick,nick2 -->sss--> 34"
數組模擬棧(后進先出)
數組push進元素,pop出元素,最后 pop 出來的元素就是最先 push 進去的元素,這就模擬出了棧。
數組模擬隊列(先進先出)
數組還可以模擬出隊列。隊列很好理解,它就像人們在排隊買菜一樣,先排隊的人先買到菜,所以第一個人總是第一個買到菜。
push+shift可以模擬隊列
unshift+pop也可以模擬隊列
從4道題目里面隨機選擇一題
分析,4道題目里面隨機選擇一題,就是隨機訪問一個數組元素,元素索引從0,1,2,3隨機取一個值
我們可以使用Math.random()生成一個0到1之間的一個隨機數(返回結果總是小于1,不會等于1,即0<= x <1)。
如果想要得到 0 到 10 之間的數字,只需要把 Math.random() 和 10相乘。我們需要得到0到4之間的值就乘以4.
Math.floor() 取整是直接忽略小數部分,我們把0到4(不可能等于4)的隨機值取整,那么就得到0,1,2,3的一個隨機取值的效果。
Math.random()
>> 0.8958447885921907
Math.random()
>> 0.7020506310432195
Math.random()*10
>> 8.579924071026204
Math.random()*10
>> 7.837956999148465
Math.floor(3.78);
>> 3
Math.floor(3.18);
>> 3
解答:
#生成了隨機數之后賦值給一個變量,后面根據這個變量去訪問的值肯定是一樣的
var title=["Math","Chinese","English","History"];
var randomIndex=Math.floor(Math.random()*4);
>> title[randomIndex];
"History"
>> title[randomIndex];
"History"
#隨機獲取數組中的元素
title[Math.floor(Math.random()*4)];
>> "History"
title[Math.floor(Math.random()*4)];
>> "English"
title[Math.floor(Math.random()*4)];
>> "English"
title[Math.floor(Math.random()*4)];
>> "Chinese"