和數組相關的一些操做

首先給你們展現一下數組有哪些經常使用的方法算法

  • concat 鏈接兩個或更多數組,並返回結果
  • every 對數組中的每一項運行給定函數,若是該函數對每一項都返回true,則返回true
  • filter 對數組中的每一項運行給定函數,返回該函數會返回true的項組成的數組
  • forEach 對數組中的每一項運行給定函數。這個方法沒有返回值
  • join 將全部的數組元素鏈接成一個字符串
  • indexOf 返回第一個與給定參數相等的數組元素的索引,沒有找到則返回-1
  • lastIndexOf 返回在數組中搜索到的與給定參數相等的元素的索引裏最大的值
  • map 對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組
  • reverse 顛倒數組中元素的順序,原先第一個元素如今變成最後一個,一樣原先的最後一個元素變成了如今的第一個
  • some 對數組中的每一項運行給定函數,若是任一項返回true,則返回true
  • sort 按照字母順序對數組排序,支持傳入指定排序方法的函數做爲參數
  • toString 將數組做爲字符串返回
  • valueOf 和toString相似,將數組做爲字符串返回
  • reduce 經常使用於對數組求和
  • slice 傳入索引值,將數組裏對應索引範圍內的元素做爲新數組返回
  • splice() :插入或者刪除 (修改數組自己)

下面進行詳細講解數組

1.數組合並 concat

var arr1 = [1, 'e', 'r'];
var arr2 = [3, 9, 'r'];
var arr  = ['w', 'q'];
var newArr = arr.concat(arr1, arr2)
console.log("arr:", arr); //arr: ["w", "q"]
console.log('newArr:', newArr); //newArr: ["w", "q", 1, "e", "r", 3, 9, "r"]
複製代碼

2.迭代器函數

every some forEach map filter reducebash

every和some講解數據結構

every 對數組中的每一項運行給定函數,若是該函數對每一項都返回true,則返回true, 不然返回false some 對數組中的每一項運行給定函數,若是任一項返回true,則返回true函數

every和some的區別 every:如有一項結果爲false,則執行結束 some:如有一項爲true, 則執行結束學習

//代碼示例
//場景 判斷數組中的值是否都爲偶數
var isEven = function(x) {
    console.log(x);
    return (x % 2 == 0) ? true : false;
}
var numbers = [1, 2 ,3 ,4];
console.log("every:", numbers.every(isEven));  //第一個元素是1, 他不是2的倍數,所以isEven函數返回false,而後every執行結束。
console.log("---------------");
console.log("some:", numbers.some(isEven)); //第一個元素isEven返回false, 第二個元素isEven返回true————迭代結束, 

/*
控制檯輸出爲
1
every: false
---------------
1
2
some: true
*/
複製代碼

forEach,filter, map講解ui

var arr = [1, 2 ,3 ,4, 5, 6];
    arr.forEach(function(x) { //對數組中的每一項運行給定函數。這個方法沒有返回值
        console.log(2*x)   //2, 4 ,6, 8, 10, 12
    })
    
    var newArr = arr.filter(function(x) { //對數組中的每一項運行給定函數,返回該函數會返回true的項組成的數組
        return x % 2 == 0
    })
    console.log(arr) //[1, 2, 3, 4, 5, 6] 
    console.log(newArr) //[2, 4, 6]  不改變原數組
    
    var newArr = arr.map(function(x) {//對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組
        return x % 2 == 0
    })
    console.log(arr) // [1, 2, 3, 4, 5, 6]
    console.log(newArr) //[false, true, false, true, false, true] 
複製代碼

reduce講解spa

//reduce 返回一個將被疊加到累加器的值, reduce方法中止執行後會返回這個累加器
var arr = [1, 2 ,3 ,4, 5, 6];
var result = arr.reduce(function(previous, current, index, arr) {
    return previous + current;
})
console.log(result); //21
複製代碼

3.排序和搜索

reverse sort indexOf lastIndexOfcode

reverse sort講解對象

//reverse
var arr = [1, 8, 3, 15, 25]
var reverse = arr.reverse();  //將數組反序 改變的是原數組
console.log(arr); [25, 15, 3, 8, 1]
console.log(reverse); [25, 15, 3, 8, 1]


var arr = [1, 8, 3, 15, 25];
var arr = [1, 8, 3, 15, 25]
arr.sort(function(a, b) { //sort 按照字母順序對數組排序,支持傳入指定排序方法的函數做爲參數
    return a-b;
})
console.log(arr); //[1, 3, 8, 15, 25]  改變的是原數組
複製代碼

indexOf, lastIndexOf講解

var arr = [1, 8, 1, 3, 1, 15, 25]
console.log(arr.indexOf(1)); //0 返回參數匹配的第一個元素的索引
console.log(arr.lastIndexOf(1));//4 返回參數匹配的最後一個元素的索引
複製代碼

··································································································································

遍歷對象的方法

  • 使用Object.getOwnPropertyNames(obj)遍歷
//返回一個數組,包含對象自身的全部屬性(不含Symbol屬性,可是包括不可枚舉屬性).
var obj = {'0':'a','1':'b','2':'c'};
Object.getOwnPropertyNames(obj).forEach(function(key){

    console.log(key,obj[key]);

});
複製代碼
  • 使用for..in..遍歷
//循環遍歷對象自身的和繼承的可枚舉屬性(不含Symbol屬性).
var obj = {'0':'a','1':'b','2':'c'};
for(var i in obj) {
     console.log(i,":",obj[i]);
}
複製代碼
  • 使用Object.keys()遍歷
//返回一個數組,包括對象自身的(不含繼承的)全部可枚舉屬性(不含Symbol屬性).
var obj = {'0':'a','1':'b','2':'c'};

Object.keys(obj).forEach(function(key){

     console.log(key,obj[key]);

});
複製代碼
  • Object.values()
  • Object.entries()

學習筆記:參考《學習Iavascript數據結構與算法》

相關文章
相關標籤/搜索