字符串的新增方法

includes()

  1. // 判断字符串中是否含有某些字符
  2. // 1.基本用法
  3. // console.log('abc'.includes('a'));
  4. // console.log('abc'.includes('ab'));
  5. // console.log('abc'.includes('bc'));
  6. // console.log('abc'.includes('ac')); // false
  7. // 2.第二个参数
  8. // 表示开始搜索的位置,默认是 0
  9. // console.log('abc'.includes('a'));
  10. // console.log('abc'.includes('a', 0));
  11. // console.log('abc'.includes('a', 1)); // false
  12. // 3.应用
  13. // https://www.imooc.com/course/list
  14. // https://www.imooc.com/course/list?c=fe&sort=pop&name=value
  15. let url = 'https://www.imooc.com/course/list?';
  16. const addURLParam = (url, name, value) => {
  17. url += url.includes('?') ? '&' : '?';
  18. url += `${name}=${value}`;
  19. return url;
  20. };
  21. url = addURLParam(url, 'c', 'fe');
  22. console.log(url);
  23. url = addURLParam(url, 'sort', 'pop');
  24. console.log(url);

padStart() 和 padEnd()

  1. // 补全字符串长度
  2. // 1.基本用法
  3. // console.log('x'.padStart(5, 'ab'));
  4. // console.log('x'.padEnd(5, 'ab'));
  5. // console.log('x'.padEnd(4, 'ab'));
  6. // 2.注意事项
  7. // 原字符串的长度,等于或大于最大长度,不会消减原字符串,字符串补全不生效,返回原字符串
  8. // console.log('xxx'.padStart(2, 'ab'));
  9. // console.log('xxx'.padEnd(2, 'ab'));
  10. // 用来补全的字符串与原字符串长度之和超过了最大长度,截去超出位数的补全字符串,原字符串不动
  11. // console.log('abc'.padStart(10, '0123456789'));
  12. // console.log('abc'.padEnd(10, '0123456789'));
  13. // 如果省略第二个参数,默认使用空格补全长度
  14. // console.log('x'.padStart(4));
  15. // console.log('x'.padEnd(4));
  16. // 3.应用
  17. // 显示日期格式
  18. // 2020
  19. // 10
  20. // 10
  21. // 2020-10-10
  22. // 2020-01-01
  23. // console.log('10'.padStart(2, 0));
  24. // console.log('1'.padStart(2, 0));

trimStart() 和 trimEnd()

  1. // 清除字符串的首或尾空格,中间的空格不会清除
  2. // 1.基本用法
  3. // const s = ' a b c ';
  4. // console.log(s);
  5. // // console.log(s.trimStart());
  6. // // console.log(s.trimLeft());
  7. // // console.log(s.trimEnd());
  8. // // console.log(s.trimRight());
  9. // console.log(s.trim());
  10. // 2.应用
  11. const usernameInput = document.getElementById('username');
  12. const btn = document.getElementById('btn');
  13. btn.addEventListener(
  14. 'click',
  15. () => {
  16. console.log(usernameInput.value);
  17. // 验证
  18. console.log(usernameInput.value.trim());
  19. if (usernameInput.value.trim() !== '') {
  20. // 可以提交
  21. console.log('可以提交');
  22. } else {
  23. // 不能提交
  24. console.log('不能提交');
  25. }
  26. // 手动提交
  27. },
  28. false
  29. );

数组的新增方法

includes()

  1. // 1.基本用法
  2. // 判断数组中是否含有某个成员
  3. // console.log([1, 2, 3].includes('2')); // false
  4. // console.log([1, 2, 3].includes(2));
  5. // 第二个参数表示搜索的起始位置,默认值是 0
  6. // console.log([1, 2, 3].includes(2, 2));
  7. // 基本遵循严格相等(===),但是对于 NaN 的判断与 === 不同,includes 认为 NaN === NaN
  8. // console.log(NaN === NaN);
  9. // console.log([1, 2, NaN].includes(NaN));
  10. // 2.应用
  11. // 去重
  12. // [1, 2, 1];
  13. const arr = [];
  14. for (const item of [1, 2, 1]) {
  15. if (!arr.includes(item)) {
  16. arr.push(item);
  17. }
  18. }
  19. console.log(arr);

Array.from()

  1. // 将其他数据类型转换成数组
  2. // 1.基本用法
  3. // console.log(Array.from('str'));
  4. // 2.哪些可以通过 Array.from() 转换成数组
  5. // 2.1.所有可遍历的
  6. // 数组、字符串、Set、Map、NodeList、arguments
  7. // console.log(Array.from(new Set([1, 2, 1])));
  8. // console.log([...new Set([1, 2, 1])]);
  9. // 2.2.拥有 length 属性的任意对象
  10. // const obj = {
  11. // '0': 'a',
  12. // '1': 'b',
  13. // name: 'Alex',
  14. // length: 3
  15. // };
  16. // console.log(Array.from(obj));
  17. // console.log([...obj]); // ×
  18. // 3.第二个参数
  19. // 作用类似于数组的 map 方法,用来对每个元素进行处理,将处理后的值放入返回的数组
  20. // console.log(
  21. // [1, 2].map(value => {
  22. // return value * 2;
  23. // })
  24. // );
  25. // console.log(Array.from('12', value => value * 2));
  26. // console.log(Array.from('12').map(value => value * 2));
  27. // 4.第三个参数
  28. Array.from(
  29. '12',
  30. value => {
  31. console.log(this);
  32. },
  33. document
  34. );
  35. Array.from(
  36. '12',
  37. function () {
  38. console.log(this);
  39. },
  40. document
  41. );

find() 和 findIndex()

  1. // find():找到满足条件的一个立即返回
  2. // findIndex():找到满足条件的一个,立即返回其索引
  3. // 1.基本用法
  4. // console.log(
  5. // [1, 5, 10, 15].find((value, index, arr) => {
  6. // // console.log(value, index, arr);
  7. // console.log(this);
  8. // return value > 9;
  9. // }, document)
  10. // );
  11. // [1, 5, 10, 15].find(function (value, index, arr) {
  12. // // console.log(value, index, arr);
  13. // console.log(this);
  14. // return value > 9;
  15. // }, document);
  16. // console.log(
  17. // [1, 5, 10, 15].findIndex((value, index, arr) => {
  18. // // console.log(value, index, arr);
  19. // return value > 9;
  20. // }, document)
  21. // );
  22. // 2.应用
  23. // const students = [
  24. // {
  25. // name: '张三',
  26. // sex: '男',
  27. // age: 16
  28. // },
  29. // {
  30. // name: '李四',
  31. // sex: '女',
  32. // age: 22
  33. // },
  34. // {
  35. // name: '王二麻子',
  36. // sex: '男',
  37. // age: 32
  38. // }
  39. // ];
  40. // console.log(students.find(value => value.sex === '女'));
  41. // console.log(students.findIndex(value => value.sex === '女'));

对象的新增方法

Object.assign()

  1. // 用来合并对象
  2. // 1.基本用法
  3. // Object.assign(目标对象, 源对象1,源对象2,...): 目标对象
  4. // const apple = {
  5. // color: '红色',
  6. // shape: '圆形',
  7. // taste: '甜'
  8. // };
  9. // const pen = {
  10. // color: '黑色',
  11. // shape: '圆柱形',
  12. // use: '写字'
  13. // };
  14. // console.log(Object.assign(apple, pen));
  15. // Object.assign 直接合并到了第一个参数中,返回的就是合并后的对象
  16. // console.log(apple);
  17. // console.log(Object.assign(apple, pen) === apple);
  18. // 可以合并多个对象
  19. // console.log(Object.assign({}, apple, pen));
  20. // console.log(apple);
  21. // console.log({ ...apple, ...pen });
  22. // 2.注意事项
  23. // 2.1.基本数据类型作为源对象
  24. // 与对象的展开类似,先转换成对象,再合并
  25. // console.log(Object.assign({}, undefined));
  26. // console.log(Object.assign({}, null));
  27. // console.log(Object.assign({}, 1));
  28. // console.log(Object.assign({}, true));
  29. // console.log(Object.assign({}, 'str'));
  30. // 2.2.同名属性的替换
  31. // 后面的直接覆盖前面的
  32. // const apple = {
  33. // color: ['红色', '黄色'],
  34. // shape: '圆形',
  35. // taste: '甜'
  36. // };
  37. // const pen = {
  38. // color: ['黑色', '银色'],
  39. // shape: '圆柱形',
  40. // use: '写字'
  41. // };
  42. // console.log(Object.assign({}, apple, pen));
  43. // 3.应用
  44. // 合并默认参数和用户参数
  45. const logUser = userOptions => {
  46. const DEFAULTS = {
  47. username: 'ZhangSan',
  48. age: 0,
  49. sex: 'male'
  50. };
  51. const options = Object.assign({}, DEFAULTS, userOptions);
  52. // const options = Object.assign({}, DEFAULTS, undefined);
  53. console.log(options);
  54. };
  55. logUser();
  56. // logUser({});
  57. // logUser({ username: 'Alex' });

Object.keys()、Object.values() 和 Object.entries()

  1. // 1.基本用法
  2. // const person = {
  3. // name: 'Alex',
  4. // age: 18
  5. // };
  6. // console.log(Object.keys(person));
  7. // console.log(Object.values(person));
  8. // console.log(Object.entries(person));
  9. // 2.与数组类似方法的区别
  10. // console.log([1, 2].keys());
  11. // console.log([1, 2].values());
  12. // console.log([1, 2].entries());
  13. // console.log(person.keys);
  14. // 数组的 keys()、values()、entries() 等方法是实例方法,返回的都是 Iterator
  15. // 对象的 Object.keys()、Object.values()、Object.entries() 等方法是构造函数方法,返回的是数组
  16. // 3.使用 for...of 循环遍历对象
  17. const person = {
  18. name: 'Alex',
  19. age: 18
  20. };
  21. // for (const key of Object.keys(person)) {
  22. // console.log(key);
  23. // }
  24. // for (const value of Object.values(person)) {
  25. // console.log(value);
  26. // }
  27. // for (const entries of Object.entries(person)) {
  28. // console.log(entries);
  29. // }
  30. // for (const [key, value] of Object.entries(person)) {
  31. // console.log(key, value);
  32. // }
  33. // Object.keys()/values()/entires() 并不能保证顺序一定是你看到的样子,这一点和 for in 是一样的