JS數(shù)組的常用方法總結(jié)

1.創(chuàng)建數(shù)組
let arr = ['apple', 'banana'];
console.log(arr, '---------訪問數(shù)組'); //[ 'apple','banana' ]
2.通過索引訪問元素
let arr = ['apple', 'banana'];
let first = arr[0];
console.log(first, '----通過索引訪問數(shù)組'); //'apple'
console.log(arr[arr.length - 1], '-------訪問數(shù)組中最后一位元素') //'banana'
3.遍歷數(shù)組
let arr = ['apple', 'banana'];
arr.forEach((item, index, array) => {
    console.log(item, '------item')  //'apple' 'banana'
    console.log(index, '------index') // 0,1
    console.log(array, '-----array') //['apple','banana']
})
4.push() 添加元素到數(shù)組末尾
let arr = ['apple', 'banana'];
arr.push('orange');
console.log(arr, '----添加元素到數(shù)組末尾'); // ['apple', 'banana', 'orange' ]
5.pop() 刪除數(shù)組末尾元素
let arr = ['apple', 'banana','orange'];
arr.pop();
console.log(arr, '----刪除數(shù)組末尾元素'); //['apple', 'banana']
6.shift() 刪除數(shù)組最前面的元素
let arr = ['apple', 'banana'];
arr.shift();
console.log(arr, '----刪除數(shù)組最前面的元素') //[ 'banana' ]
7.unshift() 添加元素到數(shù)組的頭部
let arr = ['banana'];
arr.unshift('eggs');
console.log(arr, '----添加元素到數(shù)組的頭部')  //[ 'eggs', 'banana' ]
8.indexOf() 查看某個(gè)某個(gè)元素在數(shù)組中的位置,存在就是當(dāng)前下標(biāo),如果不存在就為-1;
let arr = [ 'eggs','banana'];
let index = arr.indexOf('banana');
console.log(index, '------查看某個(gè)某個(gè)元素在數(shù)組中的位置黄琼;') //1
//--------------------
let index1 = arr.indexOf('watermelon');
console.log(index1, '------查看某個(gè)某個(gè)元素在數(shù)組中的位置;') //-1
9.splice是數(shù)組中最強(qiáng)大的功能之一相寇,增,刪钮科,改
let arr = [ 'eggs','banana'];
splice(index,howmany,string1,string2) 
//index整數(shù)唤衫,規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置,end要?jiǎng)h除的項(xiàng)目數(shù)量绵脯。如果設(shè)置為 0佳励,則不會刪除項(xiàng)目。string1,string2是插入或替換的元素
arr.splice(0, 1, 'grapes'); //在0的位置刪除一個(gè)元素蛆挫,并且加入一個(gè)元素 赃承,刪除插入
console.log(arr,'------') //[ 'grapes', 'banana' ] '------'
arr.splice(1, 2, 'fruits'); //在下標(biāo)為1的位置插入2個(gè)元素,如果后面只傳了一個(gè)就插入一個(gè)
console.log(arr,'------') //[ 'grapes', 'fruits' ] '------'
arr.splice(2, 2, 'fruits', 'fruits'); //在下標(biāo)為2的位置插入2個(gè)元素
console.log(arr,'------') //[ 'grapes', 'fruits' ] '------'
arr.splice(0, 1);  //刪除元素
console.log(arr, '---通過索引刪除某個(gè)元素')

  • splice() 方法可刪除從 index 處開始的零個(gè)或多個(gè)元素悴侵,并且用參數(shù)列表中聲明的一個(gè)或多個(gè)值來替換那些被刪除的元素瞧剖。
  • 如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數(shù)組可免。
  • 該方法會改變原始數(shù)組
10.slice 不會改變原數(shù)組()
let arr=[ 'fruits', 'fruits', 'fruits' ];
let copyArr = arr.slice();  //拷貝數(shù)組
console.log(copyArr) //[ 'fruits', 'fruits', 'fruits' ]
let sliceArr = arr.slice(0, 1);  //獲取元素 
console.log(sliceArr)  //[ 'fruits' ]
  • slice( start,end ) 方法可從已有的數(shù)組中返回選定的元素抓于。

  • 返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素浇借。

  • 該方法并不會修改數(shù)組捉撮,而是返回一個(gè)子數(shù)組。如果想刪除數(shù)組中的一段元素逮刨,應(yīng)該使用方法 Array.splice()呕缭。

11.Array.from() 方法從一個(gè)類似數(shù)組或可迭代對象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例堵泽。
const bar = ['a', 'b', 'c'];
Array.from(bar);
const foo = Array.from('foo');
console.log(foo); //[ 'f', 'o', 'o' ] 
  • es6新特性中Array類多了一個(gè)靜態(tài)方法from
12.Array.isArray() 用于確定傳遞的值是否是一個(gè) Array修己。
console.log(Array.isArray([1, 2, 3])) //true
console.log(Array.isArray('str')) //false
console.log(Array.isArray({ 'foo': '1' })) //false
console.log(Array.isArray(null)) //false
console.log(Array.isArray(undefined)) //false
13.Array.of() 方法創(chuàng)建一個(gè)具有可變數(shù)量參數(shù)的新數(shù)組實(shí)例
console.log(Array.of(5)) //[5] 創(chuàng)建一個(gè)數(shù)組為[5]
console.log(Array.of(1, 2, 3)) //[1,2,3]
console.log(Array.of(1, [1, 23], 3)) //[ 1, [ 1, 23 ], 3 ]
14.concat() 方法用于合并兩個(gè)或多個(gè)數(shù)組恢总。此方法不會更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組睬愤。
let array1 = ['a', 'b'];
let array2 = ['1', '2'];
let array3 = [].concat(array1, array2);
console.log(array3) //[ 'a', 'b', '1', '2' ]
15.array.copyWithin(target, start, end)
  • target 必需片仿。:從該位置開始替換數(shù)據(jù)。
  • start 必需尤辱。從該位置開始讀取數(shù)據(jù)砂豌,默認(rèn)為 0 。如果為負(fù)值光督,表示倒數(shù)阳距。
  • end 可選。到該位置前停止讀取數(shù)據(jù)结借,默認(rèn)等于數(shù)組長度筐摘。如果為負(fù)值,表示倒數(shù)船老。 (默認(rèn)為 array.length)
    *es6 特性
let copyWithinArr = ["alpha", "beta", "copy", "delta"].copyWithin(1, 2, 3);
1=='beta'
2=='copy'
3=='delta'
console.log(copyWithinArr) // [ 'alpha', 'copy', 'copy', 'delta' ]
let copyWithinArr1 = ["alpha", "beta", "copy", "delta"].copyWithin(2, 0);
console.log(copyWithinArr1) //[ 'alpha', 'beta', 'alpha', 'beta' ]
16.entries() 方法返回一個(gè)新的Array Iterator對象(可迭代對象)咖熟,該對象包含數(shù)組中每個(gè)索引的鍵/值對。迭代對象中數(shù)組的索引值作為 key柳畔, 數(shù)組元素作為 value馍管。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.entries();
var entries = ["a", "b", "c"];
var iterator = entries.entries();
console.log(iterator, '---')
console.log(iterator.next().value, '---')
console.log(iterator.next())
var iter = entries.entries();
var a = [];
// for(var i=0; i< arr.length; i++){   // 實(shí)際使用的是這個(gè) 
for (var i = 0; i < arr.length + 1; i++) {    // 注意,是length+1薪韩,比數(shù)組的長度大
    var tem = iter.next();             // 每次迭代時(shí)更新next
    console.log(tem.done);             // 這里可以看到更新后的done都是false
    if (tem.done !== true) {             // 遍歷迭代器結(jié)束done才是true
        console.log(tem.value);
        a[i] = tem.value;
    }
}
console.log(a);  // [ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ] 遍歷完畢确沸,輸出next.value的數(shù)組
  • keys()方法返回一個(gè)新的Array迭代器,它包含數(shù)組中每個(gè)索引的鍵俘陷。 返回的是下標(biāo)
  • values() 方法返回一個(gè)新的 Array Iterator 對象张惹,該對象包含數(shù)組每個(gè)索引的值
for (let index of ['a', 'b'].keys()) {
  console.log(index);
}
// 0  
// 1  
17.every() 方法測試數(shù)組的所有元素是否都通過了指定函數(shù)的測試。
function isBigEnough(element, index, array) {
    return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
18.some() 方法測試數(shù)組中的某些元素是否通過由提供的函數(shù)實(shí)現(xiàn)的測試岭洲。
console.log([1,2,3,4,5].some(isBigEnough),'----some'); //一個(gè)都沒有通過false 
// passed is false
console.log([12, 54, 18, 1,2].some(isBigEnough),'--------some'); //只要有一個(gè)通過即為true
// passed is true
19.fill() 方法用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素宛逗。
arr.fill(value,start盾剩,end)
let fillArr = [1, 2, 3, 4, 5];
console.log(fillArr.fill(3)) //[ 3, 3, 3, 3, 3 ]
console.log(fillArr.fill(2, 0, 2)) //[ 2, 2, 3, 3, 3 ]
console.log(fillArr.fill(5, 1)) // 2, 5, 5, 5, 5 ]
20.filter() 方法創(chuàng)建一個(gè)新數(shù)組, 其包含通過所提供函數(shù)實(shí)現(xiàn)的測試的所有元素雷激。
let filter = (value) => {
    return value > 10
}
console.log([15, 13, 2, 16, 3].filter(filter))  // 15, 13, 16 ]
21.find() 方法返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的值。否則返回 undefined告私。
console.log([15, 13, 2, 16, 3].find(filter))  // 15 返回第一個(gè)滿足條件的值  否則undefined
22.findIndex()方法返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的索引屎暇。否則返回-1。
console.log([15, 13, 2, 16, 3].findIndex(filter))  // 0 返回第一個(gè)滿足條件的下表  否則-1
23.forEach() 方法對數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)驻粟。 //item是值,index下標(biāo),array是原數(shù)組
fillArr.forEach((item, index, array) => console.log(item))
24.includes() 方法用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值根悼,根據(jù)情況凶异,如果包含則返回
console.log(fillArr.includes(2)) //true 檢查數(shù)組中是否有該值有為true,否則false
console.log(fillArr.includes(4)) //false  
25.indexOf()方法返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引挤巡,如果不存在剩彬,則返回-1。
console.log(fillArr.indexOf(2))  //0
console.log(fillArr.indexOf(4))  //-1 
26.join() 方法將一個(gè)數(shù)組(或一個(gè)類數(shù)組對象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串矿卑。
let joinArr = ['Wind', 'Rain', 'Fire'];
console.log(joinArr.join());  //Wind,Rain,Fire
27.lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或變量)在數(shù)組中的最后一個(gè)的索引喉恋,如果不存在則返回 -1。從數(shù)組的后面向前查找母廷,從 fromIndex 處開始轻黑。
console.log(['a','b'].lastIndexOf('a'));   //0  從后面往前面找
28.map() 方法創(chuàng)建一個(gè)新數(shù)組,其結(jié)果是該數(shù)組中的每個(gè)元素都調(diào)用一個(gè)提供的函數(shù)后返回的結(jié)果琴昆。
let numbers=[1,2,3,45,7,8,9];
let doubles=numbers.map(x=>x+1);
console.log(doubles,'------map') //[ 2, 3, 4, 46, 8, 9, 10 ] '------map'
29.reduce() 方法對累加器和數(shù)組中的每個(gè)元素(從左到右)應(yīng)用一個(gè)函數(shù)氓鄙,將其減少為單個(gè)值。
const reduceArr=[1,2,3,4,5,6];
const reduce=(accumulator,currentValue)=>{
    console.log(accumulator,'-------accumulator'); //累加的值
    console.log(currentValue,'-------currentValue'); //當(dāng)前元素
    return accumulator+currentValue
};
console.log(reduceArr.reduce(reduce))  //21 從左往右
30.reduceRight() 方法接受一個(gè)函數(shù)作為累加器(accumulator)和數(shù)組的每個(gè)值(從右到左)將其減少為單個(gè)值业舍。
console.log(reduceArr.reduceRight(reduce))  //21 從右往左
31.reverse() 方法將數(shù)組中元素的位置顛倒抖拦。
console.log(reduceArr.reverse()) //[ 6, 5, 4, 3, 2, 1 ] 數(shù)組順序顛倒
32.sort() 數(shù)組的元素進(jìn)行排序,并返回?cái)?shù)組
let items = [
    { name: 'Edward', value: 21 },
    { name: 'Sharpe', value: 37 },
    { name: 'And', value: 45 },
    { name: 'The', value: -12 },
    { name: 'Magnetic' ,value :0},
    { name: 'Zeros', value: 37 }
  ];
  items.sort((a,b)=>{
      return a.value-b.value
  })

  console.log(items)

  items.sort((a,b)=>{
    var nameA = a.name.toUpperCase(); // ignore upper and lowercase
    var nameB = b.name.toUpperCase(); // ignore upper and lowercase
    if (nameA < nameB) {
        return -1;
      }
      if (nameA > nameB) {
        return 1;
      }
    // names must be equal
    
      return 0;
    // return   nameA-nameB  轉(zhuǎn)成NAN
  })
  console.log(items)
33.toLocaleString()返回一個(gè)字符串表示數(shù)組中的元素勤讽。數(shù)組中的元素將使用各自的 toLocaleString 方法轉(zhuǎn)成字符串蟋座,
  let str=[1,2,3,4,5];
  console.log(str.toLocaleString())  //1,2,3,4,5 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市脚牍,隨后出現(xiàn)的幾起案子向臀,更是在濱河造成了極大的恐慌,老刑警劉巖诸狭,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件券膀,死亡現(xiàn)場離奇詭異,居然都是意外死亡驯遇,警方通過查閱死者的電腦和手機(jī)芹彬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叉庐,“玉大人舒帮,你說我怎么就攤上這事《傅” “怎么了玩郊?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枉阵。 經(jīng)常有香客問我译红,道長,這世上最難降的妖魔是什么兴溜? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任侦厚,我火速辦了婚禮耻陕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刨沦。我一直安慰自己诗宣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布已卷。 她就那樣靜靜地躺著梧田,像睡著了一般淳蔼。 火紅的嫁衣襯著肌膚如雪侧蘸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天鹉梨,我揣著相機(jī)與錄音讳癌,去河邊找鬼。 笑死存皂,一個(gè)胖子當(dāng)著我的面吹牛晌坤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旦袋,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼骤菠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了疤孕?” 一聲冷哼從身側(cè)響起商乎,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祭阀,沒想到半個(gè)月后鹉戚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡专控,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年抹凳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伦腐。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赢底,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柏蘑,到底是詐尸還是另有隱情幸冻,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布辩越,位于F島的核電站嘁扼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏黔攒。R本人自食惡果不足惜趁啸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一强缘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧不傅,春花似錦旅掂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至崖疤,卻和暖如春秘车,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劫哼。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工叮趴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人权烧。 一個(gè)月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓眯亦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親般码。 傳聞我的和親對象是個(gè)殘疾皇子妻率,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容