日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组整理随手笔记

發布時間:2024/3/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组整理随手笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 數組
    • 創建數組
    • 數組的屬性
    • 數組的方法
    • 數組排序的方法
    • 數組迭代(數組遍歷)
    • 判斷是不是數組
    • 注意點
    • 補充

數組

數組類型是 object (typeof [] == object)

創建數組

  • var arr = new Array();
  • // new Array();一般用來創建長度很長的空數組。var arr = new Array(100); // 長度為100的空數組 var arr = new Array(100,100); // 等價于 [100 ,100]
  • var arr = [];
  • 數組的屬性

  • arr.length
  • 數組的方法

  • arr.forEach( function ); // 數組有多少,就執行多少遍

  • arr.sort() // 對數組進行排序

  • arr.push() // 數組進行加項,

  • arr.toString() // 把數組改成數組值

  • const arr = ["red","green","blue"]; console.log(arr.toString()); // 相當于結構 // red,green,blue
  • arr.join( - ); // 將數組值變成一個連起來的字符串
  • const arr = ["red","green","blue"]; arr.join( "*" ); // red*green*blue
  • arr.pop(); // 刪除數組最后一個數據,返回最后一個數據。

  • arr.push(‘red’); // 在數組最后加入一個數據,返回加入后數組長度length

  • // 把數據加到第一項// push的話加到最后一項,這樣是加到第一項result = [obj].concat(showGoodsList);
  • arr.shift(); // shift() 方法會刪除首個數組元素,并把所有其他元素“位移”到更低的索引。返回刪除的數據

  • arr.unshift(‘red’); // 在數組最前面加入數據,返回新數組長度length

  • arr.splice(beginIndex, number, “Lemon”,“Kiwi”);

  • arr.splice(2,1,"KIWI"); // 從索引為2的數據開始,包含索引為2,開始,1是截取1個數據,然后替換第一個參數(2)定義了應添加新元素的位置(拼接)。 第二個參數(0)定義應刪除多少元素。其余參數(“Lemon”,“Kiwi”)定義要添加的新元素。 splice() 方法返回一個包含已刪除項的數組:
  • arr1.concat(arr2) // 兩個數組進行拼接
  • var myGirls = ["Cecilie", "Lone"]; var myBoys = ["Emil", "Tobias", "Linus"]; var myChildren = myGirls.concat(myBoys); // 連接 myGirls 和 myBoys
  • arr.slice(1); // 把一個數組截取返回一個截取到的新數組,不會改變原來的數組
  • arr.slice(1); // 一個參數的話,從index到最后 包含1,beginarr.slice(1,3); // 兩個參數的話,從begin到end。 不包含end [begin,end)

    數組排序的方法

  • arr.sort() // 對數組按照字母的unicode編碼進行順序排序,只看首字符。所以這樣會導致 20 大于 100
  • // 默認地,sort() 函數按照字符串順序對值進行排序。 // 該函數很適合字符串("Apple" 會排在 "Banana" 之前)。 // 不過,如果數字按照字符串來排序,則 "25" 大于 "100",因為 "2" 大于 "1"。所以我們用比值法解決這個數字排序問題const arr = [1,2,3]; arr.sort((a ,b)=>{return a - b; });// 傳的參數為負數就不換位置,正值就需要換位置。 // 所以A - B為從小到大排列 // B - A為從大到小排列 // 根據類型進行排列var obj = [{name : "xiaowang", age : 18},{name : "xiaochen", age : 19},{name : "xiaolin", age : 20} ];function compare ( type ) {// 這里為什么會想到返回一個函數呢,因為sort里面需要寫一個函數return function (a, b) {var value1 = a[type];var value2 = b[type];return value1 - value2;} }arr.sort( compare( "name" ) ); V8 引擎 sort 函數只給出了兩種排序 InsertionSort 和 QuickSort,數量小于10的數組使用 InsertionSort,比10大的數組則使用 QuickSort。
  • arr.reverse(); // 顛倒數組的排序
  • 數組迭代(數組遍歷)

  • arr.forEach(function (value, index, arr){ }); // 三個參數, value,index, arr本身

  • arr.map(function (value, index, arr) {}); // 通過對每個數組元素執行函數來創建新數組。返回一個新數組,不會改變原來的數組。

  • // 一般用來操作數組 const arr = [1,2,3]; arr = arr.map(function (value ) {return value * 2; }); // 每個元素都乘以2
  • arr.filter(function (value ,index , arr){ }); // 一般用來篩選,產生一個新數組。
  • const arr = [1,1,2,3,98,0,13,4]; arr = arr.filter(function (value){return value > 10; });
  • arr.reduce(function (total , value, index, arr){ }, InitialValue); // 4個參數,第一參數是數組的第一項,這個函數,只遍歷arr.length - 1次,一般用來算一個數組的數據的總和。從左(開頭)開始累加
  • // total ( 初始值/先前返回的值 ) // index 從1開始,value從第二項開始, total沒有初始值時,為第一項。后來都是return返回的值,返回undefined,total就是undefined。 不會改變原數組 const arr = [10,9,8,31,3,57,0,1,3,87,4]; arr.reduce(function (total , value, index, arr){total = total + value;return total; });// 注意: // 還可以添加一個初始值,初始值會賦值給total // 當添加初始值時,index就從0開始遍歷,遍歷arr.length 次了。
  • arr.reduceRight(function (total, value , index, arr){ },initialValue); // 與reduce的區別就是,他是從右邊(末尾)開始累加的。
  • // 系統自帶的函數消耗的性能比較少。遍歷1000個時,比white與for省性能 // 可以用console.time("123"); console.timeEnd("123"); 測試一下時間
  • arr.every(function ( value , index, arr){}); // 一般用于測試一個數組是否都滿足條件。一個不符合就返回false
  • arr.every(function (value){return value > 18;// 一旦有一個不滿足條件,就返回false,不會再測試后的數值。 });
  • arr.some(function (value, index, arr) {}); // 一般用于檢測數組是否有一個符合條件。,有一個就足夠了
  • arr.some(function (value){return value > 18; })
  • indexOf(searchvalue,fromindex)
    fromindex 可選的整數參數。規定在字符串中開始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。
  • // 查找到searchvalue時就返回searchvalue的index,找不到時,返回 -1
  • arr.lastIndexOf(); // 與indexOf的區別就是,它是從最后開始查找的。

  • arr.find(); // 查找第一個滿足條件的值,返回這個值。

  • arr.find(function (value , index, arr){return value >18; });
  • arr.findIndex(function (value, index, arr){}); // 查找第一個滿足條件的值的索引。
  • 判斷是不是數組

  • Array.isArray( arr ); // 判斷是不是數組,ECMAScript 5 定義的新方法 老的瀏覽器不能用。需要自己包裝一個。
  • // 判斷是不是數組 // 方法1 . function isArray(x) {return x.constructor.toString().indexOf("Array") > -1; }// 方法2 . var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // 返回 true

    注意點

    具有命名索引的數組被稱為關聯數組(或散列)。

    js不支持命名索引

    var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length 將返回 0 var y = person[0]; // person[0] 將返回 undefined

    補充

  • instanceof
  • instanceof 運算符用于檢測構造函數的 prototype 屬性是否出現在某個實例對象的原型鏈上。

    function Car(make, model, year) {this.make = make;this.model = model;this.year = year; } const auto = new Car('Honda', 'Accord', 1998);console.log(auto instanceof Car); // expected output: trueconsole.log(auto instanceof Object); // expected output: true
  • delete
  • var fruits = ["Banana", "Orange", "Apple", "Mango"]; delete fruits[0]; // 把 fruits 中的首個元素改為 undefined// 使用 delete 會在數組留下未定義的空洞。請使用 pop() 或 shift() 取而代之。
  • toString()
    // 所有的對象都要這個方法

  • Math.min() || Math.max()

  • // 尋找最大最小值,直接用這個函數就可以了。不需要進行排序再找出來來。這個函數一般這樣使用,Math.min(1,2,3,4,5,6);查找數組時。所以需要加個applyMath.min.apply(null, arr);// 手寫Math.max function myArrayMax(arr) {var len = arr.lengthvar max = -Infinity;while (len--) {if (arr[len] > max) {max = arr[len];}}return max; }

    總結

    以上是生活随笔為你收集整理的数组整理随手笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。