Js數(shù)組常用方法

//JS數(shù)組常用方法及其應(yīng)用

/**

* 1.push(): 向數(shù)組尾部添加一個(gè)或多個(gè)元素,并返回添加新元素后的數(shù)組長(zhǎng)度。注意,該方法會(huì)改變?cè)瓟?shù)組。

* pop(): 刪除數(shù)組的最后一個(gè)元素,并返回該元素。注意,該方法會(huì)改變?cè)瓟?shù)組。

*/

let arr1 = ["a","b","c"];

console.log("arr1:" + arr1);

arr1.push("d");

console.log("arr1:" + arr1);

let t = arr1.pop();

console.log("arr1.pop():" + t);

console.log("arr1:" + arr1);

輸出:

arr1:a,b,c

arr1:a,b,c,d

arr1.pop():d

arr1:a,b,c

/**

* 2.unshift():在數(shù)組的第一個(gè)位置添加元素,并返回添加新元素后的數(shù)組長(zhǎng)度。注意,該方法會(huì)改變?cè)瓟?shù)組。

* shift():刪除數(shù)組的第一個(gè)元素,并返回該元素。注意,該方法會(huì)改變?cè)瓟?shù)組。

*/

let arr1 = ["a","b","c"];

console.log("arr1:" + arr1);

arr1.unshift("d");

console.log("arr1:" + arr1);

arr1.shift();

console.log("arr1:" + arr1);

輸出:

arr1:a,b,c

arr1:d,a,b,c

arr1:a,b,c

利用shift和pop方法可以分別正序逆序輸出數(shù)組值,但是遍歷之后原數(shù)組中的數(shù)據(jù)被清空了:

let elem;

while (elem = arr1.shift()) {

? ? console.log(elem);

}

while (elem = arr1.pop()) {

? ? console.log(elem);

}

/**

* 3.indexOf():返回指定元素在數(shù)組中出現(xiàn)的位置,如果沒有出現(xiàn)則返回-1。indexOf方法還可以接受第二個(gè)參數(shù),表示搜索的開始位置。

*/

let arr1 = ["a","b","c"];

console.log("arr1:" + arr1.indexOf("a"));

console.log("arr1:" + arr1.indexOf("d"));

console.log("arr1:" + arr1.indexOf("a",1));

輸出:

arr1:0

arr1:-1

arr1:-1

利用indexof可以遍歷數(shù)組,做數(shù)值的比較操作:

function topicsCompare( topics1, topics2, cb ){

? ? let add = [];

? ? let remove = [];

? ? for (let key in topics1) {

? ? ? ? let top1 = topics1[key];

? ? ? ? // console.log("top1"+top1);

? ? ? ? if( topics2.indexOf(top1) === (-1) ){

? ? ? ? ? ? //輸出topics1中存在,topics2中不存在的數(shù)據(jù)

? ? ? ? ? ? console.log("---"+top1);

? ? ? ? ? ? remove.push(top1);

? ? ? ? }

? ? }

? ? for (let key in topics2) {

? ? ? ? let top2 = topics2[key];

? ? ? ? // console.log("top2"+top2);

? ? ? ? if( topics1.indexOf(top2) === (-1) ){

? ? ? ? ? ? ?//輸出topics2中存在,topics1中不存在的數(shù)據(jù)

? ? ? ? ? ? console.log("+++"+top2);

? ? ? ? ? ? add.push(top2);

? ? ? ? }

? ? }

? ? return cb(add,remove);

}

/**

* 4.join():以參數(shù)作為分隔符,將所有數(shù)組成員組成一個(gè)字符串返回。如果不提供參數(shù),默認(rèn)用逗號(hào)分隔。

*/

let arr1 = ["a","b","c"];

console.log("arr1:" + arr1);

console.log("arr1:" + arr1.join());

console.log("arr1:" + arr1.join(" "));

console.log("arr1:" + arr1.join("|"));

console.log("arr1:" + arr1.join("*"));

輸出:

arr1:a,b,c

arr1:a,b,c

arr1:a b c

arr1:a|b|c

arr1:a*b*c

/**

* 5.concat():用于多個(gè)數(shù)組的合并。它將新數(shù)組的成員,添加到原數(shù)組的尾部,然后返回一個(gè)新數(shù)組,原數(shù)組不變。

*/

let arr1 = ["a","b","c"];

let arr2 = ["d","e"];

console.log("arr1:" + arr1);

console.log("arr1:" + arr1.concat(arr2));

輸出:

arr1:a,b,c

arr1:a,b,c,d,e

/**

* 6.reverse():用于顛倒數(shù)組中元素的順序,返回改變后的數(shù)組。注意,該方法將改變?cè)瓟?shù)組。

*/

let arr1 = ["a","b","c"];

console.log("arr1:" + arr1);

console.log("arr1:" + arr1.reverse());

輸出:

arr1:a,b,c

arr1:c,b,a

/**

* 7.slice():用于截取原數(shù)組的一部分,返回一個(gè)新數(shù)組,原數(shù)組不變。

* slice(start,end)它的第一個(gè)參數(shù)為起始位置(從0開始),第二個(gè)參數(shù)為終止位置(但該位置的元素本身不包括在內(nèi))。如果省略第二個(gè)參數(shù),則一直返回到原數(shù)組的最后一個(gè)成員。

*/

let arr = ['a', 'b', 'c'];

console.log("arr1:" + arr.slice(0));? ? ? ? // ["a", "b", "c"]

console.log("arr1:" + arr.slice(1));? ? ? ? // ["b", "c"]

console.log("arr1:" + arr.slice(1, 2));? ? // ["b"]

console.log("arr1:" + arr.slice(2, 6));? ? // ["c"]

console.log("arr1:" + arr.slice());? ? ? ? ? // ["a", "b", "c"]? ? 無參數(shù)返回原數(shù)組

console.log("arr1:" + arr.slice(-2));? ? ? ? ? // ["b", "c"]? ? 參數(shù)是負(fù)數(shù),則表示倒數(shù)計(jì)算的位置

console.log("arr1:" + arr.slice(-2, -1));? ? // ["b"]

輸出:

arr1:a,b,c

arr1:b,c

arr1:b

arr1:c

arr1:a,b,c

arr1:b,c

arr1:b

/**

* 8.splice():刪除原數(shù)組的一部分成員,并可以在被刪除的位置添加入新的數(shù)組成員,返回值是被刪除的元素。注意,該方法會(huì)改變?cè)瓟?shù)組。

* splice(start,delNum,addElement1,addElement2,...)第一個(gè)參數(shù)是刪除的起始位置,第二個(gè)參數(shù)是被刪除的元素個(gè)數(shù)。如果后面還有更多的參數(shù),則表示這些就是要被插入數(shù)組的新元素。

*/

let arr1 = ["a","b","c","d","e","f"];

let arr2 = ["1","2","3"];

console.log("arr1:" + arr1);

console.log("arr1:" + arr1.splice(4, 2));

console.log("arr1:" + arr1);

console.log("arr1:" + arr1.splice(4, 2, arr2));

console.log("arr1:"+ arr1);

console.log("arr1:" + arr1.splice(-4, 2));//起始位置如果是負(fù)數(shù),就表示從倒數(shù)位置開始刪除

console.log("arr1:"+ arr1);

console.log("arr1:" + arr1.splice(2, 0, "c", "d", "e", "f"));//如果只插入元素,第二個(gè)參數(shù)可以設(shè)為0,此處表示從第二個(gè)位置后面開始插入

console.log("arr1:"+ arr1);

console.log("arr1:" + arr1.splice(4));//如果只有第一個(gè)參數(shù),等同于將原數(shù)組在指定位置拆分成兩個(gè)數(shù)組

console.log("arr1:"+ arr1);//此處表示從第4個(gè)位置開始

輸出:

arr1:a,b,c,d,e,f

arr1:e,f

arr1:a,b,c,d

arr1:

arr1:a,b,c,d,1,2,3

arr1:b,c

arr1:a,d,1,2,3

arr1:

arr1:a,d,c,d,e,f,1,2,3

arr1:e,f,1,2,3

arr1:a,d,c,d

/**

* 9.sort():對(duì)數(shù)組成員進(jìn)行排序,默認(rèn)是按照字典順序排序。排序后,原數(shù)組將被改變。

* sort方法不是按照大小排序,而是按照對(duì)應(yīng)字符串的字典順序排序。也就是說,數(shù)值會(huì)被先轉(zhuǎn)成字符串,再按照字典順序進(jìn)行比較,所以101排在11的前面。

*/

let arr1 = ["a","b","e","f","c","d"];

let arr2 = [1,2,9,3,4,5];

let arr3 = [111, 1101, 10111];

console.log("arr1:" + arr1.sort());

console.log("arr1:" + arr2.sort());

console.log("arr1:" + arr3.sort());

輸出:

arr1:a,b,c,d,e,f

arr1:1,2,3,4,5,9

arr1:10111,1101,111

如果想讓sort方法按照自定義方式排序,可以傳入一個(gè)函數(shù)作為參數(shù),表示按照自定義方法進(jìn)行排序。該函數(shù)本身又接受兩個(gè)參數(shù),表示進(jìn)行比較的兩個(gè)元素。

如果返回值大于0,表示第一個(gè)元素排在第二個(gè)元素后面;其他情況下,都是第一個(gè)元素排在第二個(gè)元素前面。

let arr1 = [10111, 1101, 111];

let arr2 = [

? ? { name: "張三", age: 30 },

? ? { name: "李四", age: 24 },

? ? { name: "王五", age: 28 }

]

arr1.sort(function (a, b) {

? return a - b;

})

arr2.sort(function (o1, o2) {

? return o1.age - o2.age;

})

console.log("arr1:" + arr1);

console.log(arr2);

輸出:

arr1:111,1101,10111

[ { name: '李四', age: 24 },

? { name: '王五', age: 28 },

? { name: '張三', age: 30 } ]

/**

* 10.map():對(duì)數(shù)組的所有成員依次調(diào)用一個(gè)函數(shù),根據(jù)函數(shù)結(jié)果返回一個(gè)新數(shù)組。

*/

let arr1 = [1, 2, 3];

let arr2 = arr1.map(function (n) {

? return n + "s";

});

console.log("arr1:" + arr1);

console.log("arr1:" + arr2);

輸出:

arr1:1,2,3

arr1:1s,2s,3s

/**

* 11.filter():參數(shù)是一個(gè)函數(shù),所有數(shù)組成員依次執(zhí)行該函數(shù),返回結(jié)果為true的成員組成一個(gè)新數(shù)組返回。該方法不會(huì)改變?cè)瓟?shù)組。

*對(duì)比filter與map的輸出區(qū)別

*/

let arr1 = [1, 2, 3, 4, 5];

let arr2 = arr1.map(function (n) {

? return n>2;

});

let arr3 = arr1.filter(function (n){

? ? return n>2;

});

console.log("arr1:" + arr1);

console.log("arr1:" + arr2);

console.log("arr1:" + arr3);

輸出:

arr1:1,2,3,4,5

arr1:false,false,true,true,true

arr1:3,4,5

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、新的聲明方式 以前我們?cè)诼暶鲿r(shí)只有一種方法,就是使用var來進(jìn)行聲明,ES6對(duì)聲明的進(jìn)行了擴(kuò)展,現(xiàn)在可以有三種...
    令武閱讀 1,088評(píng)論 0 7
  • 由于最近都在freecodecamp上刷代碼,運(yùn)用了很多JavaScript數(shù)組的方法,因此做了一份關(guān)于JavaS...
    2bc5f46e925b閱讀 2,171評(píng)論 0 16
  • 添加(返回新的數(shù)組長(zhǎng)度) 末尾添加 arr.push(els) 開頭添加 arr.unshift(els) 刪除(...
    追卓2018閱讀 512評(píng)論 0 0
  • 1、使用typeof bar ===“object”來確定bar是否是一個(gè)對(duì)象時(shí)有什么潛在的缺陷?這個(gè)陷阱如何避免...
    深海鯽魚堡閱讀 745評(píng)論 1 1
  • 如果一時(shí)半會(huì)不知道做什么項(xiàng)目, 可以發(fā)現(xiàn)身邊熱的項(xiàng)目, 或者一些可以給你靈感的項(xiàng)目! 嘗試問自己,如果讓你做,你能...
    烏龜?shù)穆?/span>閱讀 285評(píng)論 0 0

友情鏈接更多精彩內(nèi)容