天天看點

JavaScript - 數組

不推薦使用

var arr=new Array()

常用這種方式

var arr=[1,2,3,true,'abc',new date()];

JS中的數組長度并不固定,随時可以添加和删改元素

  • ##push:向數組尾部添加元素,傳回值為數組新長度
var arr=[,,];
var result=arr.push(,,);
// [1,2,3,1,2,3]
           
  • ##pop:從數組尾部移除一個元素,傳回值為移除的元素
var arr=[,,];
var result=arr.pop();
// [1,2]
           
  • ##shift:從頭部移除一個元素,傳回值為移除的元素
var arr=[,,];
var result=arr.shift();
// [2,3]
           
  • ##unshift:從頭部插入多個元素,傳回值為數組的長度
var arr=[,,];
var result=arr.unshift('a','b');
// ['a','b',,,]
           
  • ##splice:截取替代元素,傳回被截取的元素

    需要操作數組本身

    p1:起始位置

    p2:表示截取個數

    p3及以後:表示替換的新元素

var arr=[,,,,];
var result=arr.splice(,,'a');
// [1,'a',4,5]
           
  • ##slice:傳回截取内容

    不會對數組本身操作

    p1p2:左閉右開區間
var arr=[,,,,];
var result=arr.slice(,);
// [1,2,3,4,5]
// result:2,3
           
  • ##concat:合并數組,傳回合并後的數組

    不對原本數組進行操作

var arr1=[,,,,];
var arr2=['a','b','c'];
var result=arr1.concat(arr2);
// result:1,2,3,4,5,a,b,c
           
  • ##join:在每個元素之間加入内容

    不需要操作原數組

var arr=[,,,,];
var result=arr.join('-');
// result:1-2-3-4-5
           
  • ##sort:正序排序
var arr=[,,,,];
arr.sort();
// [1,2,3,5,6]
           

但是因為他按字元串排序

var arr=[,,,,];
arr.sort();
// [1,10,2,3,5]
           

如果要按照大小排序

// 按升序排序
var arr=[,,,,];
arr.sort(compare);
alert(arr);
function compare(value1,value2){
if (value1<value2){
    return -;
  }else if(value1>value2){
    return ;
  }else{
    return ;
  }
}
// 1,2,3,5,10
           
// 按降序排序
var arr=[,,,,];
arr.sort(compare);
alert(arr);
function compare(value1,value2){
if (value1<value2){
    return ;
  }else if(value1>value2){
    return -;
  }else{
    return ;
  }
}
// 10,5,3,2,1
           
  • ##reverse:将數組倒過來
var arr=[,,,,];
arr.reverse();
// [5,4,3,2,1]
           
  • ##indexOf:查找指定元素位置,傳回在數組中的下标

    stringObject.indexOf(searchvalue,fromindex)

    從左開始

    stringObject.lastIndexOf(searchvalue,fromindex)

    從右開始
參數 描述
searchvalue 必需。規定需檢索的字元串值。
fromindex 可選的整數參數。規定在字元串中開始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略該參數,則将從字元串的首字元開始檢索。

* ##every:方法使用指定函數檢測數組中的所有元素

* 如果數組中檢測到有一個元素不滿足,則整個表達式傳回 false,且剩餘的元素不會再進行檢測。

* 如果所有元素都滿足條件,則傳回 true。

array.every(function(value,index,array), thisValue)

參數 描述
value 必須。目前元素的值
index 可選。目前元素的索引值
array 可選。目前元素屬于的數組對象
thisValue 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”
var arr=[,,,,,,,,];
var result=arr.every(function (value, index, array) {
  return value>2;
})
alert(result);
// result:false
           
  • ## filter:建立一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素

    注意: filter() 不會對空數組進行檢測。

    array.filter(function(value, index, array), thisValue)

參數 描述
value 必須。目前元素的值
index 可選。目前元素的索引值
array 可選。目前元素屬于的數組對象
thisValue 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”

傳回數組,包含了符合條件的所有元素。如果沒有符合條件的元素則傳回空數組。

var arr=[,,,,,,,,];
var result=arr.filter(function (value, index, array) {
  return value<2;
})
alert(result);
// result:1
           
  • ##some:用于檢測數組中的元素是否滿足指定條件(函數提供)

    some() 方法會依次執行數組的每個元素:

    • 如果有一個元素滿足條件,則表達式傳回true , 剩餘的元素不會執行檢測。
    • 如果沒有滿足條件的元素,則傳回false。

      array.some(function(value, index, array), thisValue)

參數 描述
value 必須。目前元素的值
index 可選。目前元素的索引值
array 可選。目前元素屬于的數組對象
thisValue 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”
var arr=[,,,];
var result=arr.some(function (value, index, array) {
  return value<2;
})
alert(result);
// result:true,false,false,false
           
  • ##forEach:方法用于調用數組的每個元素,并将元素傳遞給回調函數

    注意: forEach() 對于空數組是不會執行回調函數的。

    array.forEach(function(value,index,array), thisValue)

參數 描述
value 必須。目前元素的值
index 可選。目前元素的索引值
array 可選。目前元素屬于的數組對象
thisValue 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”
var arr=[,,,,,,,,];
arr.forEach(function (value, index, array) {
  alert(value);
})
           

傳回值:undefined

  • ##map:按照原始數組元素順序依次處理元素

    array.map(function(value, index, array), thisValue)

參數 描述
value 必須。目前元素的值
index 可選。目前元素的索引值
array 可選。目前元素屬于的數組對象
thisValue 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”
var arr=[,,,];
var result=arr.map(function (value, index, array) {
  return value+1;
})
alert(result);
// resultl:2,3,4,5
           

傳回一個新數組,數組中的元素為原始數組元素調用函數處理後的值。

  • ##reduce:接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值

    reduceRight()則是從右往左

    array.reduce(function(total, value, index, array), initialValue)

參數 描述
total 必需。初始值, 或者計算結束後的傳回值
value 必須。目前元素的值
index 可選。目前元素的索引值
array 可選。目前元素屬于的數組對象
initialValue 可選。傳遞給函數的初始值
var arr=[,,,];
var result=arr.reduce(function (total, value, index, array) {
  return total+value;
})
alert(result);
// result:10
           

繼續閱讀