javascript 陣列 物件的一些方法記錄
阿新 • • 發佈:2020-11-29
記錄一下常用的陣列和物件的一些方法
- 陣列
- push() 陣列後新增元素
// 作用:把一個元素或多個元素,從陣列後面新增到數組裡面;
// 引數:新增的資料
// 返回:新增後的陣列的長度;
let arr = [1, 2, 3];
arr.push(5, "6");
- find() 陣列中找出符合條件的第一個元素
let result = [].find(function(item,index,self){ return true; }); // 回撥函式有三個引數,分別表示:陣列元素的值、索引、整個陣列 // 如果某次迴圈返回的是true,find方法的返回值就是滿足這個條件的第一個元素。 // 如果沒有找到會返回undefined。 // 用法:找陣列中第一個小於0的數字 let arr = [1, 2, 4, 0, -4, 3, -2, 9]; let result = arr.find(function (item) { return item < 0; }); let result =arr.find(item=>item<0) // -4
- findIndex 獲得指定陣列元素下標
// 引數:函式(被傳入的函式,回撥函式) // 格式要求: // item 回撥函式,代表每一次遍歷的資料 // return 判斷條件 // 返回:滿足條件的第一個元素的下標,若沒有,返回-1; var index = arr.findIndex(function(item) { return item === 20; }); console.log(index); // 根據 nowArticleID 把其在 articleList 陣列中的下標給獲得到 const index = this.articleList.findIndex( item => item.art_id === this.nowArticleID )
- pop 陣列後置刪除元素
// 作用:從陣列的後面刪除一個元素
// 引數:無;
// 返回:被刪除的元素;
var arr = [2,5,9,8,7,6]
var res = arr.pop();
console.log(arr, res);
- unshift 陣列前置追加元素
// 作用:從陣列前面新增資料(一個或者多個)
// 引數:一個或者多個;
// 返回:新增後的陣列的長度
var l = arr.unshift("a", "b");
console.log(arr, l);
- shift 陣列前置刪除元素
// 作用:從陣列的前面刪除一個元素 // 引數:無; // 返回:被刪除的元素; var arr = [2,5,9,8,7,6] var res = arr.shift(); console.log(arr, res);
- map陣列對映
map對映方法:對陣列進行遍歷,返回一個新陣列,元素個數與被處理陣列一致,但是元素的value值是map處理過的。map對映方法:對陣列進行遍歷,返回一個新陣列,元素個數與被處理陣列一致,但是元素的value值是map處理過的。
// 獲取頻道的全部id,以陣列格式返回
const userChannelIds = this.channelList.map(item => {
return item.id
})
var a = [1,2,3,4,5]
var b = a.map(function(current,index,array){
return current + 1
})
console.log(b) // [2,3,4,5,6]
console.log(a) // [1,2,3,4,5]
- filter陣列過濾
filter方法,對陣列的元素進行過濾,把符合條件的元素重新組成陣列返回。
// 作用:對當前陣列一定的過濾;
// 引數:函式(函式)格式要求:
// 函式引數:item,index,arr
// item:每個資料
// index:下標;
// arr:當前遍歷的陣列;
// return 過濾條件; 返回是true,把當前滿足條件的item 放入新的陣列中
// 返回:返回過濾後的新陣列;
var arr_1 = arr.filter(function(item, index, arr) {
// 過濾條件; 返回是true,把當前滿足條件的item 放入新的陣列中
return item == 10;
});
console.log(arr, arr_1);
const rest = this.channelAll.filter(item => {
// Array.includes判斷是否包含該元素
return !userChannelIds.includes(item.id)
})
- includes陣列包含
includes方法,判斷陣列是否包含指定的元素。返回 true / false
陣列.includes(引數1,引數2)
// 引數1,必須,表示查詢的內容
// 引數2,可選,表示開始查詢的位置,0表示從第一個元素開始找。預設值是0。
let arr = [1, 4, 3, 9];
console.log(arr.includes(4)); // true
console.log(arr.includes(4, 2)); // false, 從下標為2的位置開始查,所以沒有找到4
console.log(arr.includes(5)); // false
- concat 陣列拼接
// 陣列.concat();
// 傳入:拼接的資料。
// 返回:新陣列;
// 傳入1個數據
var arr = [1, 2];
var Arr = arr.concat("abc");
console.log(arr, Arr);
// 傳入多個數據
var Arr = arr.concat("a", "b", "c", "d", "e", "f");
console.log(arr, Arr);
// 傳入1個數組
var Arr = arr.concat(["aa", "bb"]);
console.log(arr, Arr);
// 傳入多個數組
var Arr = arr.concat(["aa", "bb"], [77, 88]);
console.log(arr, Arr);
- splice 陣列增刪改
var arr = ['a', 'b', 'c', 'd', 'e'];
// 刪除:
// 引數:第一個引數是開始的下標,第二個引數:要刪除的個數;
// 返回:被刪除元素的陣列;
var res = arr.splice(3, 1);
console.log(arr);----->['a', 'b', 'c', 'e'] 刪除元素對原陣列進行操作
console.log(res);----->['d']
// 新增:
// 引數:第一個引數:開始的下標;第二個引數:刪除的個數;後面引數:要新增的資料,從開始的下標位置新增;
// 返回:沒有刪除,返回[]
var res = arr.splice(3, 0, "AA", 18);
console.log(arr); ---->["a", "b", "c", "AA", 18, "d", "e"]
console.log(res); ---->[]
// 修改:
// 引數:第一個引數:開始的下標;第二個引數:刪除的個數;後面引數:要新增替換的資料,從開始的下標位置;
// 返回:被替換的資料的陣列;
var res = arr.splice(3, 1, "HH");
console.log(arr); ----->["a", "b", "c", "HH", "e"]
console.log(res); ----->["d"]
- 陣列與字串互轉split和join
var str = '劉備|關羽|張飛';
console.log(str);
// 字串---->陣列:
// 引數:分隔符
// 返回:陣列;
var arr = str.split("|");
console.log(arr);
// 陣列----->字串
// 引數:分隔符;
// 返回:字串;
var str_1 = arr.join("*_*");
console.log(str_1);
- indexOf 陣列中查詢元素
// 引數:被查詢的元素
// 返回:被查詢的元素的下標索引(沒有找到返回-1)
// 場景:查詢陣列中有沒有我們需要的資料;
var arr = [1, 10, 20];
var index = arr.indexOf("a");
console.log(index); ----->-1
- forEach 遍歷陣列
var arr = [0, 10, 10, 10, 20];
// 作用:遍歷陣列
// 引數:函式(函式)格式要求:
// 函式引數:item,index,arr
// item:每個資料
// index:下標;
// arr:當前遍歷的陣列;
var max = arr[1];
arr.forEach(function(item, index, arr) {
console.log(item, index, arr);
if (item > max) {
max = item;
}
});
console.log(max);
- slice 擷取陣列
// 作用:擷取陣列
// 引數:
// 返回:被擷取的新陣列;
var arr = ['a', 'b', 'c', 'd', 'e'];
// 引數:2個引數。第一個引數從哪個下標開始(包括),擷取到哪個下標結束(不包括),
var res = arr.slice(1, 4);
console.log(arr, res);
// 引數:1個引數,從哪個下標開始,一直到結尾都要擷取
var arr_1 = arr.slice(1);
console.log(arr_1);
// 引數:沒有引數,全部擷取,複製陣列;
var res = arr.slice();
// 陣列:複雜資料型別;
console.log(res, arr);
console.log(res == arr); ---->false
- 陣列排序 sort()
// sort() 方法用於對陣列的元素進行排序。
var arr = [11,52,74,85,96,15];
arr.sort(sortby)
// sortby 可選。規定排序順序。必須是函式。
// 返回值:對陣列的引用。
// 注意:陣列在原陣列上進行排序,不生成副本。
// 如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字串(如有必要),以便進行比較。
// 如果想按照其他標準進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字。比較函式應該具有兩個引數 a 和 b,其返回值如下:
// 若 a 小於 b,在排序後的陣列中 a 應該出現在 b 之前,則返回一個小於 0 的值。
// 若 a 等於 b,則返回 0。
// 若 a 大於 b,則返回一個大於 0 的值。
- 陣列倒序reverse()
// reverse() 方法用於顛倒陣列中元素的順序。
var arr = [11,52,74,85,96,15];
arr.reverse();
// 注意:該方法會改變原來的陣列,而不會建立新的陣列。
- 擴充套件運算子
把陣列中的元素一項項地展開,把一個整體的陣列拆開成單個的元素。
var arr1 = [1, 2, 3];
var arr2 = [...arr1];
- 陣列的去重操作
let arr1 = [1, 2, 3, 3, 4, 5];
let arr = [...new Set(this.arr1)]
- some() 方法
some() 方法用於檢測陣列中的元素是否滿足指定條件(函式提供)。
some() 方法會依次執行陣列的每個元素:
如果有一個元素滿足條件,則表示式返回true , 剩餘的元素不會再執行檢測。
如果沒有滿足條件的元素,則返回false。
注意:
some() 不會對空陣列進行檢測。
some() 不會改變原始陣列
// 檢索陣列中是否存在某個值
function some(item,index,arr){
if(item == 10){
console.log (item+"存在於這個陣列");
}
console.log (item+"不存在於這個陣列");
}
var a = [11,50,40,3,5,80,90,4];
a.some(some)
// 10不存在於這個陣列
// false
- Array.isArray()
判斷一個物件是不是陣列,返回的是布林值
let arr = [1, 2, 3, 4, 5];
console.log(Array.isArray(arr)) // true
let str = "12345"
console.log(Array.isArray(str)) // false
- Array.toString()
此方法將陣列轉化為字串:
let arr = [1, 2, 3, 4, 5];
let str = arr.toString()
console.log(str) // 1,2,3,4,5
- Array.every()
// 此方法是將所有元素進行判斷返回一個布林值,如果所有元素都滿足判斷條件,則返回true,否則為false:
let arr = [1, 2, 3, 4, 5]
const isLessThan4 = value => value < 4
const isLessThan6 => value => value < 6
arr.every(isLessThan4 ) //false
arr.every(isLessThan6 ) //true