JavaScript基礎(五)陣列
陣列
陣列定義
-
通過字面量定義陣列:
var arr = [10,20,30];
-
通過建構函式定義陣列:
var arr = new Array(引數); // 引數位置為一個數值時為陣列長度,多個數值時為陣列中的元素。如果沒有引數的時候 Array後面的括號可以省略。
陣列操作
- 陣列長度:
陣列名.length;
陣列中儲存的資料型別一定是一樣的嗎?
型別可以不一樣。
陣列的長度是不是可以改變呢?
可以改變。
陣列高階API
1、判斷陣列和轉換陣列
instanceof // 是一個關鍵字,判斷A是否是B型別。
isArray() //HTML5中新增 ,判斷是不是陣列
toString() //把陣列轉換成字串,每一項用,分割
valueOf() //返回陣列物件本身
join(變數) //根據每個字元把陣列元素連起來變成字串變數可以有可以沒有。不寫預設用逗號分隔,無縫連線用空字串。
instanceof
var str1 = new String("abc");
var str2 = "abc";
console.log(str1 instanceof String); // true
console.log(str2 instanceof String); // false
join
//join是把陣列元素用特殊方式連結成字串(引數決定用什麼連結,無參預設用逗號連結)
var arr = ["關羽","張飛","劉備"];
var str1 = arr.join();
var str2 = arr.join(" ");//如果用空格的話,那麼元素之間會有一個空格
var str3 = arr.join("");//用空字串,連結元素,無縫連線
var str4 = arr.join("&");
console.log(str1);
console.log(str2);
console.log(str3);
console.log(str4);
arguements
只在函式中使用,代表傳入實參的陣列。
arguements 是偽陣列:不能修改長短的陣列。(可以修改元素,但是不能變長變短)
fn(1,2);
fn(1,2,3);
fn(1,2,3,4,5);
function fn(a,b){
//只在函式中使用,實參的陣列。
arguments[0] = 0; // 可以修改內容
console.log(arguments);
//偽陣列:不能修改長短的陣列。(可以修改元素,但是不能變長變短)
arguments.push(1);
console.log(arguments instanceof Array); // false
//形參個數
console.log(fn.length);
//實參個數
console.log(arguments.length);
// 形參和實參個數可以不同,因為實參傳入的時候可以形參的個數不一樣。
// arguments.callee相當於函式名,這裡列印整個函式。
console.log(arguments.callee);
}
2、陣列增刪和換位置(原陣列講被修改)
push() //在陣列最後面插入項,返回陣列的長度
//陣列1改後的長度 = 陣列1.push(元素1);
pop() //取出陣列中的最後一項,返回最後一項
//被刪除的元素 = 陣列1.pop();
unshift() //在陣列最前面插入項,返回陣列的長度
//陣列1改後的長度 = 陣列1.unshift(元素1);
shift() //取出陣列中的第一個元素,返回最後一項
//被刪除的元素 = 陣列1.shift();
reverse() //翻轉陣列(原陣列講唄反轉,返回值也是被反轉後的陣列)
//反轉後的陣列 = 陣列1.reverse();
sort(); //給陣列排序,返回排序後的陣列。如何排序看引數。
//從小到大排序後的陣列 = 陣列1.sort(function(a,b){
// return a-b;
//});
sort
var arr2 = [7,6,15,4,13,2,1];
console.log(arr2); // 7,6,15,4,13,2,1
console.log(arr2.sort()); // 1,13,15,2,4,6,7
問題:只能通過第一位排列。(對首字母的 unicode 編碼進行排序)
解決:sort方法不穩定,設計的時候就是這麼設計的,可以通過回撥函式進行規則設定。
console.log(arr2);
console.log(arr2.sort(function (a,b) {
return a-b; //升序 //b-a:降序
}));
迭代方法
代替 for 迴圈。
every
every()他的返回值是一個 boolean 型別值。而引數是一個回撥函式。
引數有三個。名字隨便起,但是表示的意思還是這樣順序的。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
// function (element,index,array)
// element:陣列元素的值
// index:索引
// array:呼叫這個方法的整個陣列物件(一般不用)
arr.every(function(fff,www,ggg) {
console.log(fff);
console.log(www);
console.log(ggg);
return true;
});
// 關長
// 0
// ["關長", "張飛", "趙龍", "馬超", "黃忠"]
// 張飛
// 1
// ["關長", "張飛", "趙龍", "馬超", "黃忠"]
// 趙龍
// 2
// ["關長", "張飛", "趙龍", "馬超", "黃忠"]
// 馬超
// 3
// ["關長", "張飛", "趙龍", "馬超", "黃忠"]
// 黃忠
// 4
// ["關長", "張飛", "趙龍", "馬超", "黃忠"]
var arr = ["青花瓷", "一路向北", "軌跡"];
var flag = arr.every(function (ele, index) { // 只要有一個沒滿足條件,就返回false
ele.length > 2;
});
console.log(flag); // false
filter
filter返回值是一個新陣列。return為 true 的陣列。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var arr1 = arr.filter(function (ele,index,array) {
if(ele.length>2){
return true;
}
return false;
});
console.log(arr1); // ["趙子龍"]
foreach
foreach遍歷陣列(無返回值,純運算元組中的元素)
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var str = "";
arr.forEach(function (ele,index,array) {
str+=ele;
});
console.log(str); // 關長張飛趙子龍馬超黃忠
map
map有返回值,返回什麼都新增到新陣列中。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var arr2 = arr.map(function (ele,index,array) {
return ele+"你好";
})
console.log(arr2); // (5) ["關長你好", "張飛你好", "趙子龍你好", "馬超你好", "黃忠你好"]
some
some有返回值,如果函式結果有一個是true,那麼some方法結果也是true。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var flag = arr.some(function (ele,index,array) {
if(ele.length>2){
return true;
}
return false;
})
console.log(flag); // true
push
向陣列的末尾新增一個或更多元素,並返回新的長度。
注意: 新元素將新增在陣列的末尾。
注意: 此方法改變陣列的長度。
提示: 在陣列起始位置新增元素請使用 unshift() 方法。
pop
刪除陣列的最後一個元素並返回刪除的元素。
注意:此方法改變陣列的長度!
提示: 移除陣列第一個元素,請使用 shift() 方法。
瞭解方法
concat() //把引數拼接到當前陣列
//新陣列 = 陣列1.concat(陣列2);
slice() //從當前陣列中擷取一個新的陣列,不影響原來的陣列,引數start從0開始,end從1開始
//新陣列 = 陣列1.slice(索引1,索引2);
splice()//刪除或替換當前陣列的某些專案,引數start,deleteCount,options(要替換的專案)
//新陣列 = 陣列1.splice(起始索引,結束索引,替換內容);
indexOf()、lastIndexOf() //如果沒找到返回-1
//索引值 = 陣列.indexOf/lastIndexOf(陣列中的元素);
forEach() // 陣列每個元素都執行一次回撥函式。
清空陣列
var array = [1,2,3,4,5,6];
// 方法一:刪除陣列中所有專案
array.splice(0,array.length);
// 方法二:length屬性可以賦值,其它語言中length是隻讀
array.length = 0;
// 方法三:
array = []; //推薦
相關文章
- JavaScript基礎——使用陣列JavaScript陣列
- javascript基礎(陣列)(十九)JavaScript陣列
- javaScript學習基礎篇(1)(陣列)JavaScript陣列
- JavaScript基礎總結(三)——陣列總結JavaScript陣列
- JavaSE基礎:陣列Java陣列
- [shell基礎]——陣列陣列
- 陣列基礎使用陣列
- golang基礎之陣列Golang陣列
- 樹狀陣列基礎陣列
- NumPy 基礎 (一) - 建立陣列陣列
- JAVA基礎--二維陣列Java陣列
- 林大媽的JavaScript基礎知識(三):JavaScript程式設計(4)陣列JavaScript程式設計陣列
- 大資料之JAVA基礎(五):迴圈和陣列方法練習大資料Java陣列
- NumPy 基礎 (二) - 陣列運算陣列
- Go 基礎教程--6 陣列 ArrayGo陣列
- Go 基礎教程--5 陣列 ArrayGo陣列
- 【重溫基礎】10.陣列陣列
- java基礎(十) 陣列型別Java陣列型別
- [基礎問題] 陣列賦值陣列賦值
- C語言基礎-1、陣列C語言陣列
- JavaScript夯實基礎系列(五):類JavaScript
- JavaScript 陣列JavaScript陣列
- 6-Java基礎語法-陣列之一維陣列Java陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- JavaSE基礎語法3-陣列Java陣列
- JS-陣列基礎知識3JS陣列
- 零基礎學Java(8)陣列Java陣列
- 【Java基礎】--演算法與陣列Java演算法陣列
- 基礎資料結構之陣列資料結構陣列
- JavaScript 陣列slice()JavaScript陣列
- JavaScript 陣列indexOf()JavaScript陣列Index
- JavaScript 陣列values()JavaScript陣列
- JavaScript 陣列fill()JavaScript陣列
- JavaScript 陣列 slice()JavaScript陣列
- JavaScript 陣列 fill()JavaScript陣列
- JavaScript 陣列 lastIndexOf()JavaScript陣列ASTIndex
- JavaScript 陣列 indexOf()JavaScript陣列Index
- javascript陣列操作JavaScript陣列