js陣列型別
js陣列型別:
陣列檢測
1.判斷變數是否為陣列型別:
arr1 instanceof Array
Array.isArray(arr1);
true
轉換方法
toString()方法,以便返回陣列的字串表示
valueOf()返回的還是陣列
由於 alert()要接收字串引數,所以它會在後臺呼叫 toString()方法,由此
會得到與直接呼叫 toString()方法相同的結果
var colors = ["red", "blue", "green"]; // 建立一個包含 3 個字串的陣列
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green
join()方法只接收一個引數,即用作分隔符的字串,然後返回包含所有陣列項的字串
var colors = ["red", "green", "blue"];
alert(colors.join(",")); //red,green,blue
alert(colors.join("||")); //red||green||blue
棧方法:
push&pop
push()方法可以接收任意數量的引數,把它們逐個新增到陣列末尾,並返回修改後陣列的長度;
pop()方法則從陣列末尾移除最後一項,減少陣列的 length 值,然後返回移除的項
var colors = new Array(); // 建立一個陣列
var count = colors.push("red", "green"); // 推入兩項
alert(count); //2
var removedElement=arr1.pop();
alert(removedElement); //green
佇列方法:
push &shift
var colors = new Array(); //建立一個陣列
var count = colors.push("red", "green"); //推入兩項
alert(count); //2
colors.push("yellow");
3
colors.shift();
"red"
在陣列的前端新增項,從陣列末端移除項
colors.unshift("black");
重新排序方法:
reverse()和 sort()
sort()方法可以接收一個比較函式作為參
數,以便我們指定哪個值位於哪個值的前面
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
var values = [0, 1, 5, 10, 15];
values.sort(compare);
alert(values); //0,1,5,10,15
操作方法
concat()方法可以基於當前陣列中的所有項建立一個新陣列
var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);
alert(colors); //red,green,blue
alert(colors2); //red,green,blue,yellow,black,brown
slice(),它能夠基於當前陣列中的一或多個項建立一個新陣列
var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow
如果 slice()方法的引數中有一個負數,則用陣列長度加上該數來確定相應的位
置。例如,在一個包含 5 項的陣列上呼叫 slice(-2,-1)與呼叫 slice(3,4)得到的
結果相同。如果結束位置小於起始位置,則返回空陣列。
splice()方法,這個方法恐怕要算是最強大的陣列方法了,它有很多種用法
刪除:可以刪除任意數量的項,只需指定 2 個引數:要刪除的第一項的位置和要刪除的項數。
例如, splice(0,2)會刪除陣列中的前兩項。
插入:可以向指定位置插入任意數量的項,只需提供 3 個引數:起始位置、 0(要刪除的項數)
和要插入的項。如果要插入多個項,可以再傳入第四、第五,以至任意多個項。例如,
splice(2,0,"red","green")會從當前陣列的位置 2 開始插入字串"red"和"green"。
替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定 3 個引數:起
始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等。例如,
splice (2,1,"red","green")會刪除當前陣列位置 2 的項,然後再從位置 2 開始插入字串
"red"和"green"。
splice()方法始終都會返回一個陣列,該陣列中包含從原始陣列中刪除的項(如果沒有刪除任何
項,則返回一個空陣列)。下面的程式碼展示了上述 3 種使用 splice()方法的方式。
var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1); // 刪除第一項
alert(colors); // green,blue
alert(removed); // red,返回的陣列中只包含一項
removed = colors.splice(1, 0, "yellow", "orange"); // 從位置 1 開始插入兩項
alert(colors); // green,yellow,orange,blue
alert(removed); // 返回的是一個空陣列
removed = colors.splice(1, 1, "red", "purple"); // 插入兩項,刪除一項
alert(colors); // green,red,purple,orange,blue
alert(removed); // yellow,返回的陣列中只包含一項
位置方法
indexOf()和 lastIndexOf()
indexOf()方法從陣列的開頭(位置 0)開始向後查詢, lastIndexOf()方法則從陣列的末尾開始向前查詢,沒找到的情況下返回-1
var numbers = [1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4)); //3
alert(numbers.lastIndexOf(4)); //5
alert(numbers.indexOf(4, 4)); //5
alert(numbers.lastIndexOf(4, 4)); //3
var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
var morePeople = [person];
alert(people.indexOf(person)); //-1
alert(morePeople.indexOf(person)); //0
迭代方法
every():對陣列中的每一項執行給定函式,如果該函式對每一項都返回 true,則返回 true。
filter():對陣列中的每一項執行給定函式,返回該函式會返回 true 的項組成的陣列。
forEach():對陣列中的每一項執行給定函式。這個方法沒有返回值。
map():對陣列中的每一項執行給定函式,返回每次函式呼叫的結果組成的陣列。
some():對陣列中的每一項執行給定函式,如果該函式對任一項返回 true,則返回 true。
以上方法都不會修改陣列中的包含的值。
在這些方法中,最相似的是 every()和 some(),它們都用於查詢陣列中的項是否滿足某個條件。
對 every()來說,傳入的函式必須對每一項都返回 true,這個方法才返回 true;否則,它就返回
false。而 some()方法則是隻要傳入的函式對陣列中的某一項返回 true,就會返回 true。請看以下
例子。
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
return (item > 2);
});
alert(everyResult); //false
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true
看一看 filter()函式,它利用指定的函式確定是否在返回的陣列中包含某一項。例如,要
返回一個所有數值都大於 2 的陣列,可以使用以下程式碼。
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});
alert(filterResult); //[3,4,5,4,3]
map()也返回一個陣列,而這個陣列的每一項都是在原始陣列中的對應項上執行傳入函式的結果。
例如,可以給陣列中的每一項乘以 2,然後返回這些乘積組成的陣列,如下所示。
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]
最後一個方法是 forEach(),它只是對陣列中的每一項執行傳入的函式。這個方法沒有返回值,
本質上與使用 for 迴圈迭代陣列一樣。來看一個例子。
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
alert(item);
});
歸併方法
reduce()和 reduceRight()
reduce()方法從陣列的第一項開始,逐個遍歷到最後。而 reduceRight()則從陣列的最後一項開始,向前遍歷到第一項
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15
相關文章
- JS型別判斷、物件克隆、陣列克隆JS型別物件陣列
- TypeScript 陣列型別TypeScript陣列型別
- js學習一陣列型別foreach方法JS陣列型別
- ArrayBuffer:型別化陣列型別陣列
- 陣列型別轉換陣列型別
- 字串json陣列怎麼轉換成jsonobject型別字串JSON陣列Object型別
- js資料型別判斷和陣列判斷JS資料型別陣列
- 陣列轉json後的資料型別問題陣列JSON資料型別
- mysql 5.7 json 型別 json 陣列型別 普通字串型別 10w資料 查詢速度差異MySqlJSON型別陣列字串
- php資料型別之陣列PHP資料型別陣列
- PostgreSQL 陣列型別使用詳解SQL陣列型別
- java基礎(十) 陣列型別Java陣列型別
- javascript型別系統——陣列arrayJavaScript型別陣列
- 記一次關於js陣列型別判斷及js型別判斷的細節探索JS陣列型別
- JNI/NDK開發指南(5):訪問陣列(基本型別陣列與物件陣列)陣列型別物件
- 陣列(引用型別)複製問題陣列型別
- 介紹PostgreSQL的陣列型別FUSQL陣列型別
- java之資料型別與陣列Java資料型別陣列
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- 第 10 節:複合型別 1:陣列型別陣列
- c語言中陣列的三種型別C語言陣列型別
- PostgreSQL:陣列——型別、運算子和函式SQL陣列型別函式
- Go 常見資料型別-01陣列Go資料型別陣列
- 【C++】構造資料型別--陣列C++資料型別陣列
- 6.5 建立一個masked型別的陣列型別陣列
- JS陣列JS陣列
- JS陣列去重 – JSON陣列去重陣列JSON
- JS陣列中(for...in)和(for...of)的區別JS陣列
- systemtap 探祕(三)- 型別、變數和陣列型別變數陣列
- java基礎學習之七:陣列型別Java陣列型別
- NumPy 陣列切片及資料型別介紹陣列資料型別
- Golang 基礎-資料型別-陣列和切片Golang資料型別陣列
- PHP陣列轉換為js陣列PHP陣列JS
- js 陣列方法JS陣列
- Json 陣列JSON陣列
- js偽陣列JS陣列
- js陣列排序JS陣列排序
- Typescript 下 Mongoose 外來鍵型別&外來鍵陣列型別定義&型別保護&聯合型別理解TypeScriptGo型別陣列