一組數據的集合,數組裏能夠存儲任何類型的數據javascript
var ary = [2,'hello',true,{name:'珠峯'},['web前端']html
索引:方便咱們找到數組中的某一項,索引就是從0開始排列 數字屬性名前端
length:數組的長度,數組中元素個數,能讀能寫java
length - 1 :獲取數組中最後一項es6
數組寫法:web
數組中獲取每一個值能夠經過下標操做 [1,2.3][2] //=>3數組
清空數組:arr.length = 0; //=> 不要寫arr = [];函數
// 向數組末尾添加arr.push(x)
arr.splice(arr.length, 0, x)
arr[arr.length] = x
// 向數組開頭添加arr.unshift(x)
arr.splice(0, 0, x)
// 刪除數組開頭第一項arr.shift()
arr.splice(0, 1)
// 刪除數組最後一項arr.pop()
arr.length--arr.length-=1arr.splice(-1)
arr.splice(arr.length - 1, 1)
// 清空數組arr.splice(0)
arr.length = 0
// 數組克隆arr.slice()/arr.slice(0)
arr.concat()
// 可以改變原數組的方法
push
shift
unshift
pop
sort
splice
reverse
複製代碼
- 返回值:添加後的數組長度
- 原數組 發生了改變(修改原數組)
複製代碼
- 返回值:添加後的數組長度
ary.unshift(20,30);
複製代碼
- 返回值:刪除的那一項
ary.pop()
複製代碼
- 返回值:刪除的那一項
- ary.shift()
複製代碼
// 狀況一:只有一個參數
// splice(x) 一個參數,從索引x處開始,一直刪除到末尾
// 返回值:刪除後的內容 組成的新數組
var arr = [10,20,30,50,60]
var res4 = arr.splice(2); //一個參數,從索引1處開始,一直刪除到末尾
複製代碼
// 狀況二:兩個參數
// splice(x,y) 兩個參數,從索引x處開始,一直刪除y個
// 返回值:刪除的內容 組成的新數組
var arr1 = [10,20,30,50,60,90];
var res5 = arr1.splice(1,3);
var arr2 = [10,20,30,50,60,90];
var res6 = arr2.splice(1,0); // 從索引1開始,刪除0個(即一個都不刪除)
複製代碼
// 狀況三:多個參數
// splice(x,y,a,b,c) 從索引x開始,刪除y個,將第三項及後面幾項添加到刪除的位置
// 返回值:刪除後的內容組成的新數組
var n = [10,20,30,50,60,90];
var res7 = n.splice(1,2,100,200,500); // 從索引1開始,刪除兩個(即20,30),將第三項及後面幾項插入到刪除的位置
var n = [10,20,30,50,60,90];
var res7 = n.splice(1,0,100,200,500); // 從索引1開始,一項都不刪除,將第三項及後面幾項插入到刪除的位置
var a = [10,20,30,50,60,90];
var res8 = a.splice(a.length,0,2,3,4); // 向數組末尾添加
var b = [10,20,30,50,60,90];
var res9 = b.splice(0,0,2,3,4); // 向數組開頭添加
複製代碼
indexOf
查找某項 在數組中首次出現的索引位置
var n = [10,20,30,50,60,20,30,90];
var nn = n.indexOf(30); //=>2
複製代碼
lastIndexOf
:查找某項,在數組中最後一次出現的索引位置
var a = [10,20,30,50,60,20,30,90];
var aa = a.lastIndexOf(30); //=>6
複製代碼
var a = [10,20,30];
var aa = a.slice(null); //返回克隆的新數組
複製代碼
var b = [10,20,30,40,50];
var bb = b.slice(2); //30,40,50
複製代碼
var c = [10,20,30,40,50];
var cc = c.slice(2,4); //30,40
複製代碼
var d = [10,20,30,40,50];
var dd = d.slice(-2); //40,50
var e = [10,20,30,40,50];
var ee = e.slice(-3,-1); //20,30
複製代碼
var ary = [{ age: 1 }, { age: 12 }, { age: 13 }, { age: 11 }, { age: 21 }, { age: 18 }];
ary.sort(function(a,b){
return a.age - b.age
})
console.log(ary); //0: {age: 1} {age: 11} {age: 12} {age: 1}3 {age: 18} {age: 21}
複製代碼
var a = [4,6,2,8,3,1]
var aa = a.sort(); //=>1,2,3,4,6,8
a === aa ; //=>true 返回值和原數組同樣
var b = [4,60,2,86,15,1,101]
var bb = b.sort(); //=>1, 101, 15, 2, 4, 60, 86
let arr = [10, 3, 18, 38, 48, 26];
// 從小到大排序
let ary = arr.sort(function (n,m) {
console.log(n-m) //前一項數字減後一項數字的結果
return n-m; // -7 15 8 28 20 30 10 8 -22 -12
});
console.log(ary); //排序後的新數組
// 從大到小排序
arr.sort(function(n, m){
return m - n
})
console.log(arr)
複製代碼
// sort默承認以按照拼音字母順序 排序
var arr = [3, 1, 5, 'c', 'd', 'a', 'b']
arr.sort()
console.log(arr)
['abc', 'ace', 'aae']
['aae', 'abc', 'ace']
// 從小到大排序
arr.sort(function(a, b) {
return a - b
})
// 從大到小
arr.sort(function(a, b) {
return b - a
})
複製代碼
var a = [3, 1, 24, 5, 11, 22, 12, 101];
var ss = a.reverse(); //=>101, 12, 22, 11, 5, 24, 1, 3
a === ss //=>true
複製代碼
var a = [1,2,3];
var b = [4,5,6];
var ss = a.concat(b); //=>1,2,3,4,5,6
複製代碼
var a = [1,2,3];
var b = [4,5,6];
var ss = b.concat(a); //=>4,5,6,1,2,3
複製代碼
concat默認只能展開一層
var res = [30].concat([10, 15], 20, 'hello')
console.log(res) // [30, 10, 15, 20, "hello"]
// concat默認只能展開一層數組
var a3 = [1]
var res = a3.concat([[2, 3, 4]], [5, 6])
console.log(res) // [1, [2, 3, 4], 5, 6]
複製代碼
var a4 = [1,2,3];
var ss1 = a4.concat(); //沒有參數,至關於克隆一個新數組返回
a4 === ss1 //=>false
複製代碼
var a = [1,2,3];
var aa = a.toString();
複製代碼
var b = [1,2,3];
var bb = b.join();
var bb1 = b.join('');
var bb2 = b.join('+'); // 能夠變成其餘符號
複製代碼
var a = [1, 2, 3, 4, 5]
// 對數組進行求和
var str = a.join('+') // "1+2+3+4+5"
console.log(eval(str)) // eval("1+2+3+4+5") => 15
// eval("1*2*3*4*5")
console.log(eval(a.join('*'))) // 120
複製代碼
// for循環
var a = [1, 2, 3, 4, 5]
for (var i = 0;i<a.length;i++){
console.log(i,a[i]);
};
複製代碼
let arr = [true, 'haha', 10, {}, [1, 2, 3]];
arr.forEach(function (item, i, all) {
console.log(item);//數組中的每項
// console.log(i); //索引
// console.log(all); // 整個數組
// console.log(this); //第二個參數若是沒有,則this是window
},arr);
複製代碼
function(item,i,all){ return 新數組的每項,長度和原始數組同樣 }ui
var a = [1, 2, 3, 4, 5];
var a2 = a.map(function(item,index,ary){
// item 當前這一項
// index 當前項的索引
// ary原數組 ary === a
return item * 2; //每次指定的返回值被做爲新數組中的內容
});
<ul id="ul"></ul>
const ul = document.getElementById('ul');
let html = '';
let arr = [1, '你好', '哈哈', '呵呵'];
let newArr = arr.map(function (item, i) {
return '<li>' + item + '</li>';
});
ul.innerHTML = newArr.join('');
console.log(newArr.join(''));
console.log(newArr);
複製代碼
//過濾大於10小於30的數字
let arr = [3, 10, 18, 38, 48, 26];
let ary = arr.filter(function (item, i) {
return item >= 10 && item < 30
})
console.log(ary);
複製代碼
let arr = [1, 2, 3, 4, 5];
//查看數組中是否有6,明顯沒有,就返回false
let res = arr.some(function (item) {
return item === 6
});
console.log(res); // flase(數組中沒有6)
let res1 = arr.indexOf(6);
console.log(res1); //-1(數組中沒有6)
複製代碼
let arr = ['62',[],NaN,{},(function(){})(),/^$/,2333];
let arr1 = [1,2,3,4,5,6];
let res = arr.every(function(item,i){
return item;
});
let res1 = arr1.every(function(item,i){
return item;
});
console.log(res); //false (不是全部項都爲true)
console.log(res1); //true (全部項都爲true)
複製代碼