《ES6新增方法》

字符串的新增方法

includes 判斷字符串中是否含有某些字符

(1)基本用法

console.log('abc'.includes('a')); // true
console.log('abc'.includes('ab')); //true
console.log('abc'.includes('bc')); //true
console.log('abc'.includes('ac')); // false

(2)參數(shù)

/*
第一個(gè)參數(shù),必需,要查找的字符串痒筒。
第二個(gè)參數(shù)啃奴,可選淆衷,設(shè)置從那個(gè)位置開始查找调煎,默認(rèn)為 0
*/
console.log('abc'.includes('a'));  //true
console.log('abc'.includes('a', 0)); //true
console.log('abc'.includes('a', 1)); // false

(3)應(yīng)用 拼接url地址

let url = 'https://www.imooc.com/course/list?';
    const addURLParam = (url, name, value) => {
      url += url.includes('?') ? '&' : '?';

      url += `${name}=${value}`;

      return url;
    };
    url = addURLParam(url, 'c', 'fe');
    console.log(url);
    url = addURLParam(url, 'sort', 'pop');
    console.log(url);
padStart和padEnd 補(bǔ)全字符串

(1)基本用法

console.log('x'.padStart(5, 'ab')); //ababx
console.log('x'.padEnd(5, 'ab')); //xabab
console.log('x'.padEnd(4, 'ab')); // xaba

(2)注意事項(xiàng)
原字符串的長(zhǎng)度五慈,等于或大于最大長(zhǎng)度蔫磨,不會(huì)消減原字符串淘讥,字符串補(bǔ)全不生效,返回原字符串

  console.log('xxx'.padStart(2, 'ab')); // xxx
  console.log('xxx'.padEnd(2, 'ab')); // xxx

用來(lái)補(bǔ)全的字符串與原字符串長(zhǎng)度之和超過(guò)了最大長(zhǎng)度堤如,截去超出位數(shù)的補(bǔ)全字符串蒲列,原字符串不動(dòng)

console.log('abc'.padStart(10, '0123456789')); //0123456abc
console.log('abc'.padEnd(10, '0123456789')); // abc0123456

如果省略第二個(gè)參數(shù),默認(rèn)使用空格補(bǔ)全長(zhǎng)度

 console.log('x'.padStart(4)); //   x
 console.log('x'.padEnd(4)); // x   

(3)應(yīng)用
padStart 顯示日期

 // 2020-10-10
console.log('10'.padStart(2, 0)); // 10
console.log('1'.padStart(2, 0)); // 01
trimStart和trimEnd方法搀罢,清除字符串的首或尾空格蝗岖,中間的空格不會(huì)清除

(1)基本用法

const s = '  a b c  ';
console.log(s.trimStart());
console.log(s.trimLeft());
console.log(s.trimEnd());
console.log(s.trimRight());

(2)應(yīng)用: 提交數(shù)據(jù)時(shí),去掉首尾空格

<input type="text" id="username" />
<input type="submit" value="提交" id="btn" />
<script>
const usernameInput = document.getElementById('username');
const btn = document.getElementById('btn');
btn.addEventListener(
  'click',
  () => {
    console.log(usernameInput.value);
    // 驗(yàn)證
    console.log(usernameInput.value.trim());
    if (usernameInput.value.trim() !== '') {
      // 可以提交
      console.log('可以提交');
    } else {
      // 不能提交
      console.log('不能提交');
    }
    // 手動(dòng)提交
  },
  false
);
</script>

數(shù)組的新增方法

includes 判斷數(shù)組中是否含有某個(gè)成員

(1)基本用法

console.log([1, 2, 3].includes('2'));  // false
console.log([1, 2, 3].includes(2)); // true

(2)參數(shù)

  /*
第一個(gè)參數(shù)榔至,必須抵赢,需要查找的元素值。
第二個(gè)參數(shù),可選瓣俯,從該索引處開始查找 searchElement杰标。如果為負(fù)值,則按升序從 array.length + fromIndex 的索引開始搜索彩匕。默認(rèn)為 0腔剂。
*/
console.log([1, 2, 3].includes(2, 2)); // false
console.log([1, 2, 3].includes(2, -2)); //true
console.log([1, 2, 3].includes(3)); // false

(3)注意事項(xiàng):基本遵循嚴(yán)格相等(===),但是對(duì)于 NaN 的判斷與 === 不同,includes 認(rèn)為 NaN === NaN

console.log(NaN === NaN);  // false
console.log([1, 2, NaN].includes(NaN)); // true

(4)應(yīng)用 數(shù)組去重

  const arr = [];
  for (const item of [1, 2, 1]) {
    if (!arr.includes(item)) {
      arr.push(item);
    }
  }
  console.log(arr);
Array.from 將其他數(shù)據(jù)類型轉(zhuǎn)換成數(shù)組

(1)基本用法

console.log(Array.from('str')); //  ["s", "t", "r"]

(2)可以通過(guò) Array.from() 轉(zhuǎn)換成數(shù)組

所有可遍歷的 數(shù)組驼仪、字符串掸犬、Set、Map绪爸、NodeList湾碎、arguments

console.log(Array.from(new Set([1, 2, 1]))); //  [1, 2]
// 等價(jià)于
console.log([...new Set([1, 2, 1])]);

擁有 length 屬性的任意對(duì)象

const obj = {
    '0': 'a',
    '1': 'b',
     name: 'Alex',
     length: 3
 };
console.log(Array.from(obj));

(3)參數(shù)

// 3.第二個(gè)參數(shù) : 數(shù)組中每個(gè)元素要調(diào)用的函數(shù)
// 作用類似于數(shù)組的 map 方法,用來(lái)對(duì)每個(gè)元素進(jìn)行處理奠货,將處理后的值放入返回的數(shù)組
console.log(
[1, 2].map(value => {
  return value * 2;
})
);
console.log(Array.from('12', value => value * 2));
console.log(Array.from('12').map(value => value * 2));
// 4.第三個(gè)參數(shù) 映射函數(shù)(mapFunction)中的 this 對(duì)象
Array.from(
'12',
value => {
console.log(this);
},
document
);
Array.from(
'12',
function () {
console.log(this);
},
document
);
find():找到滿足條件的一個(gè)立即返回值
findIndex():找到滿足條件的一個(gè)介褥,立即返回其索引

(1)參數(shù)

參數(shù)  描述
function(currentValue, index,arr)   必須。數(shù)組每個(gè)元素需要執(zhí)行的函數(shù)递惋。
1柔滔、currentValue 必需,當(dāng)前元素萍虽。
2睛廊、index,可選杉编,當(dāng)前元素的索引超全。
3、arr邓馒,可選嘶朱。當(dāng)前元素所屬的數(shù)組對(duì)象
thisValue   可選。 傳遞給函數(shù)的值一般用 "this" 值绒净。如果這個(gè)參數(shù)為空见咒, "undefined" 會(huì)傳遞給 "this" 值

(2)代碼示例

console.log(
       [1, 5, 10, 15].find((value, index, arr) => {
           // console.log(value, index, arr);
           console.log(this);
           return value > 9;
       }, document)
   );
   [1, 5, 10, 15].find(function(value, index, arr) {
       // console.log(value, index, arr);
       console.log(this);
       return value > 9;
   }, document);
   console.log(
       [1, 5, 10, 15].findIndex((value, index, arr) => {
           // console.log(value, index, arr);
           return value > 9;
       }, document)
   );

(3)應(yīng)用 從獲取到數(shù)據(jù)中篩選數(shù)據(jù)

const students = [
      {
        name: '張三',
        sex: '男',
        age: 16
      },
      {
        name: '李四',
        sex: '女',
        age: 22
      },
      {
        name: '王二麻子',
        sex: '男',
        age: 32
      }
    ];
    console.log(students.find(value => value.sex === '女'));
    console.log(students.findIndex(value => value.sex === '女'));

3、對(duì)象的新增方法

Object.assign 合并對(duì)象挂疆,相當(dāng)于將后面的對(duì)象合并到第一個(gè)對(duì)象中
(1)基本使用

// Object.assign(目標(biāo)對(duì)象, 源對(duì)象1,源對(duì)象2,...): 目標(biāo)對(duì)象

    const apple = {
      color: '紅色',
      shape: '圓形',
      taste: '甜'
    };
    const pen = {
      color: '黑色',
      shape: '圓柱形',
      use: '寫字'
    };
    console.log(Object.assign(apple, pen));
    // console.log(Object.assign(apple, pen) === apple); true

(2)注意事項(xiàng)
基本數(shù)據(jù)類型作為源對(duì)象 與對(duì)象的展開類似改览,先轉(zhuǎn)換成對(duì)象,再合并

  console.log(Object.assign({}, undefined));
  console.log(Object.assign({}, null));
  console.log(Object.assign({}, 1));
  console.log(Object.assign({}, true));
  console.log(Object.assign({}, 'str'));

同名屬性的替換 , 后面的直接覆蓋前面的

const apple = {
    color: ['紅色', '黃色'],
    shape: '圓形',
    taste: '甜'
  };
  const pen = {
    color: ['黑色', '銀色'],
    shape: '圓柱形',
    use: '寫字'
  };
  console.log(Object.assign({}, apple, pen));

(3)應(yīng)用 合并默認(rèn)參數(shù)和用戶參數(shù)

    const logUser = userOptions => {
    const DEFAULTS = {
      username: 'ZhangSan',
      age: 0,
      sex: 'male'
    };

    const options = Object.assign({}, DEFAULTS, userOptions);
    // const options = Object.assign({}, DEFAULTS, undefined);
    console.log(options);
  };
  logUser();
  // logUser({});
  // logUser({ username: 'Alex' });

Object.keys 獲取對(duì)象中屬性名的集合
Object.value 獲取對(duì)象中屬性值值的集合
Object.entries 獲取對(duì)象中屬性和值的集合
(1)基本用戶

const person = {
    name: 'Alex',
    age: 18
  };
  console.log(Object.keys(person));
  console.log(Object.values(person));
  console.log(Object.entries(person));

(2)與數(shù)組類似方法的區(qū)別
數(shù)組的 keys()缤言、values()宝当、entries() 等方法是實(shí)例方法,返回的都是 Iterator
對(duì)象的 Object.keys()胆萧、Object.values()庆揩、Object.entries() 等方法是構(gòu)造函數(shù)方法俐东,返回的是數(shù)組

const person = {
        name: 'Alex',
        age: 18
    };
    console.log([1, 2].keys());
    console.log([1, 2].values());
    console.log([1, 2].entries());
    console.log(person.keys);

(2)使用 for...of 循環(huán)遍歷對(duì)象

  for (const key of Object.keys(person)) {
      console.log(key);
    }
    for (const value of Object.values(person)) {
      console.log(value);
    }
    for (const entries of Object.entries(person)) {
      console.log(entries);
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市订晌,隨后出現(xiàn)的幾起案子虏辫,更是在濱河造成了極大的恐慌,老刑警劉巖锈拨,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砌庄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奕枢,警方通過(guò)查閱死者的電腦和手機(jī)娄昆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缝彬,“玉大人萌焰,你說(shuō)我怎么就攤上這事」惹常” “怎么了扒俯?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)壳贪。 經(jīng)常有香客問(wèn)我陵珍,道長(zhǎng),這世上最難降的妖魔是什么违施? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瑟幕,結(jié)果婚禮上磕蒲,老公的妹妹穿的比我還像新娘。我一直安慰自己只盹,他們只是感情好辣往,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著殖卑,像睡著了一般站削。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孵稽,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天许起,我揣著相機(jī)與錄音,去河邊找鬼菩鲜。 笑死园细,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的接校。 我是一名探鬼主播猛频,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鹿寻?” 一聲冷哼從身側(cè)響起睦柴,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毡熏,沒(méi)想到半個(gè)月后爱只,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡招刹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年恬试,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疯暑。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡训柴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妇拯,到底是詐尸還是另有隱情幻馁,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布越锈,位于F島的核電站仗嗦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏甘凭。R本人自食惡果不足惜稀拐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丹弱。 院中可真熱鬧德撬,春花似錦、人聲如沸躲胳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坯苹。三九已至隆檀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粹湃,已是汗流浹背恐仑。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留再芋,地道東北人菊霜。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像济赎,于是被迫代替她去往敵國(guó)和親鉴逞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子记某,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355