陣列方法之滿漢全席

沒仐沒關係發表於2019-04-18

根據紅寶書整理

陣列方法之滿漢全席

1、檢測陣列

Array.isArray()

確定某個值到底是不是陣列。

var arr = [1,2,3];
console.log(Array.isArray(arr)) //true
複製程式碼

2、轉換方法

toString()

將 Array 的元素轉換為字串。結果字串由逗號分隔,且連線起來。

var arr = [1,2,3];
console.log(arr.toString());//"1,2,3"
複製程式碼

##valueOf() 返回陣列本身。

console.log(arr.valueOd());//[1,2,3]
複製程式碼

toLocaleString()

將 Array 的元素轉換為字串。結果字串由逗號分隔,且連線起來。

var person1={
            toLocaleString:function(){
                return 'Nikolaos11'
            },
            toString:function(){
                return 'Nicholas22'
            }
        }

        var person2 = {
            toLocaleString:function(){
                return 'Grigorios33'
            },
            toString : function(){
                return 'Greg44'
            }
        }
        var people = [person1,person2];
        alert(people);//Nicholas22,Greg44
        alert(people.toString());//Nicholas22,Greg44
        alert(people.toLocaleString());//Nikolaos11,Greg44
複製程式碼

join()

使用不同的分隔符來建構字串

var arr = [1,2,3];
console.log(arr.join('#');//1#2#3
複製程式碼

3、棧方法

push()

把引數新增到末尾

var arr =[];
arr.push(1,2);
console.log(arr)//[1,2]
複製程式碼

pop()

移除陣列最後一項

var arr =[1,2];
arr.pop(1,2);
console.log(arr)//[1]
複製程式碼

4、佇列方法

unshift()

在陣列前面新增任意項

var arr =['a','b','c'];
arr.unshift('s')
console.log(arr)//['s','a',b','c']
複製程式碼

shift()

移除陣列前面一項

var arr=['a','b','c'];
arr.shift()
console.log(arr)//['b','c']
複製程式碼

5、重排序方法

reverse()

反轉陣列順序

var values = [1,2,3,4,5];
values.reverse();
console.log(values);//[5,4,3,2,1]
複製程式碼

sort()

升序排列陣列 *sort()會呼叫每個陣列的toString(),然後得到字串比較排序

var values = [0,1,5,10,15];
console.log(values.sort());//[0, 1, 10, 15, 5]
複製程式碼

因為字串比較時,‘10’位於‘5’的前面,所以陣列被修改了

解決:sort()傳一個比較函式作為引數

var values = [0,1,5,10,15];
function compare(value1,value2){
    if(value1 < value2){
        return -1;
    }else if(value1 > value2){
        return 1;
    }else{
        return 0;
    }
}
values.sort(compare)//[0, 1, 5, 10, 15]

複製程式碼

6、操作方法

concat()

將接收到的引數新增到副本陣列的末尾

var values = [0,1,5,10,15];
console.log(values.concat('yellow','red'));//[0, 1, 5, 10, 15, "yellow", "red"]
複製程式碼

slice()

返回引數制定的所有項

  • 引數是負數,則用陣列長度+負數 來確定相應的位置。陣列項為5,slice(-2,-1)===slice(3,4)
  • 如果結束位置 < 起始位置,則返回空陣列
var values = [0,1,5,10,15];
var colors1 = values.slice(1);
var colors2 = values.slice(1,4);

console.log(colors1);//[1, 5, 10, 15]
console.log(colors2);//[1, 5, 10]
複製程式碼

splice()

  • 刪除。splice(要刪除的第一項的位置,要刪除的項數)
var colors=['green','red','pink','blue'];
console.log(colors.splice(1,2));//['red','pink']
console.log(colors)//['green','blue']
複製程式碼
  • 插入。splice(起始位置,0,要插入的項)
var colors=['green','red','pink','blue'];
colors.splice(1,0,'yellow')
console.log(colors);//['green','yellow',red','pink','blue']
複製程式碼
  • 替換。splice(起始位置,要刪除的項數,要插入的項)
var colors=['green','red','pink','blue'];
colors.splice(1,2,'yellow')
console.log(colors);//['green','yellow','blue']
複製程式碼

7、位置方法

indexOf(第一個引數在陣列的項,從哪裡開始查)

從陣列開頭查,第一個引數在陣列的項。如有第二個引數,表示從哪裡開始查

var arr = [1,3,4,5,7];
arr.indexOf(4)//2
arr.indexOf(4,1)//2
arr.indexOf(4,2)//2
arr.indexOf(4,3)//-1
複製程式碼

lastIndexOf()

從陣列末尾查,第一個引數在陣列的項。如有第二個引數,表示從哪裡開始查

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.indexOf(4,4)//5
numbers,lastIndexOf(4,4)//3  第2個引數從末尾開始查
複製程式碼

8、迭代方法

every()

對陣列的每一項執行給定函式,每一項都符合條件返回true,有一項不符合或全部不符合返回false

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,arr){
    return (item > 2)
})
console.log(everyResult);// false

複製程式碼

filter()

對陣列的每一項執行給定函式,返回函式會返回true的項組成的陣列

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.filter(function(item,index,arr){
    return (item > 2)
})
console.log(everyResult);// [3,4,5,4,3]
複製程式碼

forEach()

對陣列的每一項執行給定函式

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,arr){
    執行操作
})
複製程式碼

map()

對陣列的每一項執行給定函式,返回函式呼叫結果的陣列

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.map(function(item,index,arr){
    return (item * 2)
})
console.log(everyResult);// [2,4,6,8,10,8,6,4,2]
複製程式碼

some()

對陣列的每一項執行給定函式,有一項符合條件返回true,

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,arr){
    return (item > 2)
})
console.log(everyResult);// true
複製程式碼

9、歸併方法

reduce()

從陣列的第一項開始,逐步遍歷到最後

//求和,第一次,prev=1 cur=2,第二次prev = 3,cur=3;
var arr = [1,2,3,4,5];
var sum = arr.reduce(function(prev,cur,index,array){
  return prev + cur;  
})
console.log(sum);//15
複製程式碼

reduceRight()

從陣列的最後一項開始,像前遍歷到第一項

//求和,第一次,prev=5 cur=4,第二次prev = 9,cur=3;
var arr = [1,2,3,4,5];
var sum = arr.reduce(function(prev,cur,index,array){
  return prev + cur;  
})
console.log(sum);//15
複製程式碼

相關文章