記錄es6用法
數(shù)組中的某項(xiàng)替換
const str3 = str4.map( item => 1 && {...item, num: '一二三四五六七'[item.num -1]})
concat:用于連接兩個(gè)或者多個(gè)數(shù)組
concat是不會(huì)改變?cè)瓉?lái)的數(shù)組的
var a=[1,4];var b=[2,4];var c=[];
console.log(c.concat(a,b)); // [1,4,2,4]
console.log(a,b); // [1,4] [2,4]
reverse:用于將數(shù)組元素顛倒順序
無(wú)參數(shù),無(wú)視參數(shù),!!!!!操作的是數(shù)組本身,會(huì)改變?cè)瓟?shù)組
var a=[1,2,3,5];
console.log(a.reverse()); // [5,3,2,1]
sort(fn):將數(shù)組元素排序: sort() 是會(huì)改變?cè)瓟?shù)組的!
參數(shù):fn(a,b):比較函數(shù) ;無(wú)參數(shù)的時(shí)候按照字母表升順排序;該方法操作的是數(shù)組元素本身
var array=[15,5,10,2,0];
array.sort((a,b)=>{return a-b});
console.log(array); // [0,2,5,10,15]
let obj_list=[{
name:'li',
value:99},{
name:'chen',
value:100},{
name:'huang',
value:1}]
console.log(obj_list.sort((a,b)=>{return a.value-b.value}))// 排序結(jié)果:'huang','li','chen'
splice:用于截取數(shù)據(jù),插入數(shù)據(jù),刪除數(shù)據(jù)。!!操作的是數(shù)據(jù)本身
參數(shù)有三:1.開(kāi)始位置 2.截?cái)嗟膫€(gè)數(shù) 3.插入的數(shù)據(jù)
//一.當(dāng)只有1個(gè)參數(shù)的時(shí)候:從開(kāi)始位置截取剩下的所有數(shù)據(jù)。slice就像只是我們想象中的裁剪,而splice則是現(xiàn)實(shí)中的,從splice中醒來(lái),已是物是人非。splice是直接對(duì)數(shù)組進(jìn)行操作的。
var array=[15,5,10,2,0];
console.log(array.slice(1)); // [5,10,2,0]
console.log(array.splice(1)); // [5,10,2,0]
//二.若有兩個(gè)參數(shù),則第一個(gè)是刪除位置的下標(biāo),第二個(gè)是從包括下標(biāo)在內(nèi)數(shù)的刪除的數(shù)量,結(jié)果返回刪除的元素,剩余的就是被手術(shù)刀裁剪過(guò)的數(shù)組了。
var array=[15,5,10,2,0];
console.log(array.splice(0,2)); // [15,5]
console.log(array); // [10,2,0]
//三.替換大法瞞天過(guò)海,這里是三個(gè)參數(shù)的,這里返回的值依舊是我們替換掉的那個(gè)值,仿佛是要給一個(gè)機(jī)會(huì)讓我們?nèi)ケ4嫠?,不讓我們忘卻歷史啊
var array=[15,5,10,2,0];
console.log(array.splice(0,1,4)); // [15]
console.log(array); // [4,5,10,2,0]
//然后就是添加的功能了,依舊是三個(gè)參數(shù),不過(guò)是把數(shù)量改成0
var array=[15,5,10,2,0];
console.log(array.splice(0,0,4)); // []
console.log(array); // [4,15,5,10,2,0]
//返回的依然是 所被替換的數(shù)值 ,因?yàn)闆](méi)有,此處自然為 []
//若是直接擴(kuò)展一個(gè)對(duì)象函數(shù)
Array.prototype.insert = function(index, item){
this.splice(index, 0, item);
}
map:重頭戲。
我們能夠在Redux中的reducer看到大量的map函數(shù),因?yàn)閞edux追求這種函數(shù)式極簡(jiǎn)的酷炫的風(fēng)格??梢哉f(shuō)在react中map的出現(xiàn)率非常高,側(cè)面反映出其非常好用!
map是指映射,和英文中的地圖不同。
map不會(huì)修改原來(lái)的數(shù)組。
//一.回調(diào)函數(shù)中0或者1個(gè)參數(shù)
var a=[1,32,442,234];
b=a.map((item)=>{return item+1;});
console.log(a,b); // [1,32,442,234] [2,33,443,235]
//如果我們什么都不做,則每一項(xiàng)都會(huì)返回 undefined
var a=[1,32,442,234];
c=a.map(()=>{}); // 打印 4個(gè) undefined
console.log(c);
//二.回調(diào)函數(shù)中第二個(gè)參數(shù) index 的作用,在react中我們主要將它賦值給key
d=a.map((item,i)=>{
console.log(i); // 0,1,2,3
})
//三.回調(diào)函數(shù)中第三個(gè)參數(shù),包含該元素的數(shù)組對(duì)象
e=a.map((item,i,array)=>{
console.log(array); // 最后會(huì)打印四遍 [1,34,442,234]
})